C# 在静态函数中使用委托

C# 在静态函数中使用委托,c#,static,delegates,C#,Static,Delegates,我在一个类中定义了一个委托字段,并直接在一个静态函数中初始化该委托字段(不生成对象)。它不应该工作,因为类没有对象,委托字段不是静态的。但它是有效的。有人能解释一下它是如何工作的吗。我复制了下面的一些代码以供参考: class Test { delegate void CustomDel(String s); static void main() { CustomDel del1, del2, del3; //it shouldn't work, but is workin

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

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
类型的三个局部变量