C#中是否有与Functors等效的内容?
C#有Func<,>,委托和匿名方法,但不是所有指向方法的指针?
C ++ Functor是一个类,而不是指向方法的指针。
答案 0 :(得分:6)
C#有Func<,>,委托和匿名方法但是不是所有指向方法的指针?
没有。甚至C#委托也是由编译器为您实现的类。这些生成的类(代表)来自MulticastDelegate
,后者又来自Delegate
。
简而言之,委托是编译器生成的类的语法糖。
答案 1 :(得分:3)
lambdas(Func<>,Action<>)和委托(命名以及匿名)都是类。
如果你需要指向方法的指针(例如将其传递给不安全的代码),你应该使用编组:
IntPtr pFunc = Marshal.GetFunctionPointerForDelegate(myDelegate);