仿函数在C#中是否具有等价物?

时间:2013-06-16 17:43:30

标签: c# c++ functor

C#中是否有与Functors等效的内容?

C#有Func<,>,委托和匿名方法,但不是所有指向方法的指针?

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

2 个答案:

答案 0 :(得分:6)

  

C#有Func<,>,委托和匿名方法但是不是所有指向方法的指针?

没有。甚至C#委托也是由编译器为您实现的类。这些生成的类(代表)来自MulticastDelegate,后者又来自Delegate

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

答案 1 :(得分:3)

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

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

IntPtr pFunc = Marshal.GetFunctionPointerForDelegate(myDelegate);