gpt4 book ai didi

c# - C# 中的委托(delegate)比 C/C++ 中的函数指针有何优势?

转载 作者:可可西里 更新时间:2023-11-01 07:53:38 24 4
gpt4 key购买 nike

C# 中的委托(delegate)提供与 C 中的函数指针类似的功能。我听到有人说“C# 委托(delegate)实际上比 C 中的函数指针更好”。怎么会?请举例说明。

最佳答案

“更好”是主观的——但主要区别是:

  • 类型安全。委托(delegate)不仅保证引用有效方法,还保证引用具有正确签名的方法。
  • 它是一个绑定(bind) 方法指针——也就是说,委托(delegate)可以指向调用委托(delegate)的特定对象。因此,一个 Action<string>代表可以引用alice.GetNamebob.GetName而不仅仅是 Person.GetName .这可能类似于 C++“指向成员的指针”——我不确定。

此外,C# 语言通过对匿名方法和 lambda 表达式的委托(delegate)支持闭包——即捕获声明过程的局部变量,委托(delegate)可以在稍后执行时引用。严格来说,这并不是委托(delegate)的一项功能——它是由 C# 编译器对匿名方法和 lambda 表达式施展魔法来启用的——但它仍然值得一提,因为它启用了 C# 中的许多功能习语。

编辑:正如 CWF 在评论中指出的那样,C# 委托(delegate)的另一个可能优势是委托(delegate)类型声明对许多人来说更容易阅读。当然,这可能是熟悉程度和经验的问题。

关于c# - C# 中的委托(delegate)比 C/C++ 中的函数指针有何优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2535516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com