4

FunctorsC#中是否有等价物?

C#Func<,>, delegates 和匿名方法,但不是所有这些指针都指向一个方法吗?

C++ Functor是一个,而不是指向方法的指针。

4

2 回答 2

7

C# 有 Func<,>、委托和匿名方法,但不是所有这些指针都指向一个方法吗?

不,甚至 C# 委托也是类,由编译器为您实现。这些生成的类(用于委托)派生自,而这些类MulticastDelegate又派生自Delegate.

简而言之,委托是编译器生成的类的语法糖。

于 2013-06-16T17:46:23.603 回答
5

lambda ( Func<>, Action<>) 和委托(命名以及匿名)都是类。

如果您需要一个指向方法的指针(例如,将其传递给不安全的代码),您应该使用marshalling

IntPtr pFunc = Marshal.GetFunctionPointerForDelegate(myDelegate);
于 2013-06-16T18:00:36.497 回答