“委托”是指一种类型还是一种对象?

时间:2009-07-28 10:37:27

标签: .net delegates msdn

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

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

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

  1. 包含对某些指定签名的方法的引用的类型
  2. 该类型的对象,实际上可以像方法一样调用。
  3. 我更喜欢更精确的词汇表,并在第一种情况下使用“委托类型”。我最近一直在阅读很多关于事件和代表的内容,这种模糊性使我多次困惑。

    MSDN中“委托”一词的其他一些用法,第一个意思是:

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

    MSDN中“委托”一词的其他一些用法,第二种含义:

    • “指定将在发生某些事件时调用的委托”
    • “代理是引用方法的对象。它们有时被描述为类型安全的 函数指针“
    你怎么看?为什么来自微软的人引入了这种模糊性?我是唯一一个有不同概念的概念问题被引用同一个词的人。

2 个答案:

答案 0 :(得分:9)

文字正在使用delegate这两个词;作为类型和类型的实例。

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

答案 1 :(得分:0)

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

所以委托类型是:

delegate void D();

委托实例是:

D d;

委托实例分配可能是:

d += new D (Method);