C ++ / CLI和C#,“委托”代表的功能,什么是独家新闻?

时间:2010-05-05 20:55:42

标签: 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 MyFunction(int myParam);
     {
           //...
     }
}

尝试在C ++ / CLI中实现相同的功能,我必须这样做:


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

显然我可以在C#中创建一个新的委托实例,而不是在那里发生什么。在C#世界中是否存在某种神奇的东西,C ++ / CLI中不存在允许该强制转换工作的魔法?某种神奇的匿名代表?感谢。

1 个答案:

答案 0 :(得分:2)

  

在C#世界中是否存在某种在C ++中不存在的魔法

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

  MyDelegate del = SomeFunction;

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

 MyDelegate del = new MyDelegate (SomeFunction);

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