C#中的委托提供与C中的函数指针类似的功能.我听到有人说"C#委托实际上比C中的函数指针更好".怎么会?请举例说明.
ito*_*son 15
"更好"是主观的 - 但主要的区别是:
Action<string>
代表可以参考alice.GetName
或bob.GetName
不仅仅是Person.GetName
.这可能类似于C++"指向成员的指针" - 我不确定.此外,C#语言通过委托支持对匿名方法和lambda表达式的闭包 - 即捕获声明过程的局部变量,委托可以在以后执行时引用该变量.这并不是严格来说代表的一个特性 - 它由C#编译器在匿名方法和lambda表达式上做了一些魔术 - 但它仍然值得一提,因为它在C#中实现了很多功能习惯用法.
编辑:正如CWF在评论中指出的那样,C#委托的另一个可能的优点是委托类型声明对于许多人来说更容易阅读.当然,这可能是熟悉和经验的问题.