gpt4 book ai didi

c# - C++/CLI 和 C#, "Casting"委托(delegate)函数,独家新闻是什么?

转载 作者:行者123 更新时间:2023-11-30 17:22:19 25 4
gpt4 key购买 nike

在 C# 2.0 中,我可以执行以下操作:


public class MyClass
{
delegate void MyDelegate(int myParam);

public MyClass(OtherObject obj)
{
//THIS IS THE IMPORTANT PART
obj.SomeCollection.Add((MyDelegate)MyFunction);
}

private void MyFunction(int myParam);
{
//...
}
}

尝试在 C++/CLI 中实现同样的事情,看来我必须这样做:


MyDelegate del = gcnew MyDelegate(this, MyFunction);
obj->SomeCollection->Add(del);

很明显,我也可以在 C# 中创建一个新的委托(delegate)实例,而不是上面发生的事情。 C# 世界中是否存在某种在 C++/CLI 中不存在的魔法,允许该转换工作?某种神奇的匿名委托(delegate)?谢谢。

最佳答案

Is there some kind of magic going on in the C# world that doesn't exist in C++

是的。从 C#2 开始,您可以简单地说:

  MyDelegate del = SomeFunction;

然后编译器将其重写为长 (C#1) 形式:

 MyDelegate del = new MyDelegate (SomeFunction);

您在 C++/CLI 中没有这种支持,但这只是符号上的差异。没什么大不了的。

关于c# - C++/CLI 和 C#, "Casting"委托(delegate)函数,独家新闻是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2776706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com