gpt4 book ai didi

c# - C# 中的委托(delegate)和 C++ 中的 fnc 指针

转载 作者:太空狗 更新时间:2023-10-29 23:09:40 27 4
gpt4 key购买 nike

我正在尝试熟悉委托(delegate)和 http://msdn.microsoft.com/en-us/library/aa288459(v=vs.71).aspx ,我正在阅读:

“与 C 或 C++ 中的函数指针不同,委托(delegate)是面向对象的、类型安全的和安全的。”

意思是,我确实有 C++ 背景,有点看不出如何理解那里的“不像”这个词。委托(delegate)是面向对象的,而 C++ fnc 指针不是?对于类型安全和安全也是如此。

谁能举几个例子和反例?

谢谢。

最佳答案

委托(delegate)比函数指针做的更多。它不仅存储函数地址,还存储对目标对象的引用。与 C++ 方法指针不同。所以调用实例方法使用起来很简单。这处理了“面向对象”的声明。

从那里开始有点下坡路,但是类型安全由编译器确保,当您分配委托(delegate)时,编译器会验证函数签名与委托(delegate)类型完全匹配。这在 C++ 中没有什么不同,但是没有办法消除不匹配。另一个可能的安全方面是委托(delegate)对象持有的对象引用对垃圾收集器是可见的。因此,您永远不能在已删除的对象上调用实例方法。

关于c# - C# 中的委托(delegate)和 C++ 中的 fnc 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10766139/

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