在静态函数中使用委托

本文关键字:静态函数 | 更新日期: 2023-09-27 18:29:19

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

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

在静态函数中使用委托

这不会像你想的那样:

delegate void CustomDel(String s);

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

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

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

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

CustomDel del1, del2, del3;

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