5

我试图让自己熟悉代表和http://msdn.microsoft.com/en-us/library/aa288459(v=vs.71).aspx,我正在阅读:

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

意思是,我确实有 C++ 背景,有点不明白如何理解那里的“不像”这个词。委托是面向对象的,而 C++ fnc 指针不是,它们是什么意思?类型安全和安全也是如此。

任何人都可以展示一些例子和反例吗?

谢谢。

4

1 回答 1

6

委托比函数指针做得更多。它不仅存储函数地址,还存储对目标对象的引用。与 C++ 方法指针不同。所以调用实例方法很简单。这照顾了“面向对象”的主张。

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

于 2012-05-26T14:09:46.670 回答