1

从 MSDN 阅读:“委托是一种引用方法的类型。一旦为委托分配了一个方法,它的行为就与该方法完全一样。”

那么“委托”是指类型还是对象?!

...不可能两者兼而有之。在我看来,这个词有两种不同的含义:

  1. 包含对某个指定签名的方法的引用的类型,
  2. 该类型的对象,实际上可以像方法一样调用。

对于第一种情况,我更喜欢更精确的词汇表并使用“委托类型”。我最近阅读了很多关于事件和代表的内容,这种模棱两可让我多次感到困惑。

MSDN 中“delegate”一词的其他一些用法:

  • “仅当事件生成事件数据时才需要自定义事件委托”
  • “委托声明定义了一个派生自 System.Delegate 类的类”

MSDN 中“delegate”这个词的其他一些用法是第二种含义:

  • “指定在某些事件发生时将被调用的委托”
  • “委托是指方法的对象。它们有时被描述为类型安全的函数指针”

你怎么看?为什么微软的人会引入这种歧义?我是唯一一个遇到用同一个词引用不同概念的概念问题的人吗?

4

2 回答 2

9

文本是delegate双向使用这个词的;作为类型和类型的实例。

它应该说“委托类型是一种引用方法的类型。一旦为委托实例分配了一个方法,它的行为就与该方法完全一样。”

于 2009-07-28T10:39:38.627 回答
0

委托类型是指签名而不是特定方法。一个委托实例,如果被分配,可能包含一个或多个方法引用。

所以委托类型是:

delegate void D();

委托实例是:

D d;

委托实例分配可能是:

d += new D (Method);
于 2010-06-18T09:40:35.587 回答