2010-05-05 47 views
3

在C#2.0中,我能做到以下几点:C++/CLI和C#,为代表“铸造”功能,什么是独家新闻?


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中不存在的魔法,它们允许这种转换工作?某种神奇的匿名代理?谢谢。

+2

看起来像C++/CLI,而不是C++。 – 2010-05-05 21:05:48

+0

你是对的。对困惑感到抱歉。编辑澄清。 – 2010-05-05 21:11:39

回答

2

是否有某种魔力在C#世界上正在发生,它不是在C++存在

是。用C#2开始,你可以简单地说:

MyDelegate del = SomeFunction; 

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

MyDelegate del = new MyDelegate (SomeFunction); 

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