C# C++/CLI和C“;铸造;代表的职能,什么';独家新闻是什么?
在C#2.0中,我可以执行以下操作:C# C++/CLI和C“;铸造;代表的职能,什么';独家新闻是什么?,c#,delegates,c++-cli,C#,Delegates,C++ Cli,在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 MyFu
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#中创建一个新的委托实例,而不是上面正在发生的事情。在C++世界中是否存在某种C++/CLI中不存在的魔法,可以让强制转换工作?某种神奇的匿名代理?谢谢
<> C++中存在不存在某种魔法吗?
对。从C#2开始,你可以简单地说:
MyDelegate del = SomeFunction;
编译器将其重写为长(C#1)形式:
在C++/CLI中没有这种支持,但这只是符号上的区别。没什么大不了的。看起来像C++ + CLI,不是C++。你是正确的。很抱歉给你带来了困惑。编辑以澄清。
MyDelegate del = new MyDelegate (SomeFunction);