在静态函数中使用委托

时间:2014-11-04 20:20:22

标签: c# static delegates

我在一个类中定义了一个委托字段,我正在一个静态函数内直接初始化该委托字段(没有创建一个对象)。它不应该工作,因为类没有对象,委托字段不是静态的。但它的确有效。任何人都可以解释它是如何工作的。我已经复制了下面的一些代码供参考:

class Test
{

  delegate void CustomDel(String s);

  static void main()
  {
   CustomDel del1, del2, del3; //it shouldn't work, but is working.
  }
}

1 个答案:

答案 0 :(得分:2)

这不符合您的想法:

delegate void CustomDel(String s);

它不是字段,它是委托类型定义。把它想象成:

private class CustomDel : Delegate
{
    // ...
}

上面的代码不能编译,因为你不能像那样声明代理,但它本质上是在幕后发生的事情:CustomDel是一种类型,只是一种特殊的类型。

现在你的代码应该更有意义了:

CustomDel del1, del2, del3;

这只声明了CustomDel类型的三个局部变量。