为什么静态构造函数没有任何参数

根据MSDN:

静态构造函数不接受访问修饰符或具有参数。

在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。

无法直接调用静态构造函数。

任何人都可以解释为什么静态构造函数不能有参数。

正如MSDN所说, 在创建第一个实例之前,会自动调用静态构造函数来初始化类 。 因此您无法发送任何参数。

如果CLR必须调用静态构造函数,它将如何知道传递它的参数?

静态构造函数作为类型初始化的一部分自动调用。 它们没有被明确调用…所以你无处可提供任何与构造函数参数相对应的参数。 如果您永远不能为参数指定任何值,为什么还要允许参数?

你如何控制传递给这样一个构造函数的参数,因为它是在第一次引用类时由运行时自动调用的,并且不能直接调用?

从理论上讲,这样的语法本来是可以设计和实现的,但是那时需要直接调用,因为现在一个简单的类引用不会知道要传递给它的参数。 静态构造函数的要点是在使用类型之前执行类型级初始化。 这样做会自动确保这种情况,而直接调用会留下足够的错误空间。

因为您无法直接调用它(根据MSDN):

无法直接调用静态构造函数。

静态构造函数不能包含任何参数。 好吧,我认为它理论上可以 – 但是没有类的实例,所以它没有任何意义。 如果你有这些参数,你会怎么做? 调用其他静态方法?

  • 在创建类的第一个实例之前,会自动调用静态构造函数。
  • 通过在构造函数定义前添加static关键字来声明。
  • 它不能不接受访问修饰符或具有任何参数。

为静态类创建一个空构造函数,并将参数化代码放到正常函数中。 如果调用此函数,将创建静态类。

静态类:

 static class DataB { static DataB(){} public static void funcWithParams(string st) {...} } 

你可以像这样创建它:

 DataB.funcWithParams("some string"); 

静态构造函数

因为静态构造函数自动调用(我们没有对静态构造函数的调用的任何控制),这就是为什么我们不能将参数传递给静态构造函数。

如果我们不能将参数传递给静态构造函数,那么为什么我们将创建静态构造函数作为参数化。

所以,我们必须使用参数少的静态构造函数。

下面是一个允许嵌套类访问表单控件而不将表单作为嵌套类的构造函数的参数的方法示例:

 public partial class Form1 : Form { public int nWow; public Form1() { InitializeComponent(); Inner.AssignMe(this); // This is where the real action is. } class Inner { static Form1 Me; static Inner(){} // empty static constructor necessary // Called AssignMe in the Form1 constructor in this code, // but this can be generalized to any nested class. public static void AssignMe(Form1 form) { Me = form; } public Inner() { Me.nWow = 1; } // Now u can access public Form1 } // members and methods even from the nested } // class' constructor. 

我根据上面的用户3567816的消息想出了这一点,虽然简洁而且有0票,但它是迄今为止最不优雅的解决方案并且非常独特。 没有人对这类问题提出这样的建议。 在嵌套类的建造者中没有更多但是更加冗长的forms参数! 这绝对是辉煌的!!

我忍不住使用静态变量名Me来给VB.Net转。 傻笑。