Functors
在C#中是否有等价物?
C#有Func<,>
, delegate
s 和匿名方法,但不是所有这些指针都指向一个方法吗?
C++ Functor
是一个类,而不是指向方法的指针。
C# 有 Func<,>、委托和匿名方法,但不是所有这些指针都指向一个方法吗?
不,甚至 C# 委托也是类,由编译器为您实现。这些生成的类(用于委托)派生自,而这些类MulticastDelegate
又派生自Delegate
.
简而言之,委托是编译器生成的类的语法糖。
lambda ( Func<>
, Action<>
) 和委托(命名以及匿名)都是类。
如果您需要一个指向方法的指针(例如,将其传递给不安全的代码),您应该使用marshalling:
IntPtr pFunc = Marshal.GetFunctionPointerForDelegate(myDelegate);