静态代码块

JavaC#我有以下问题:在Java中我可以做到以下几点:

 public class Application { static int attribute; static { attribute = 5; } // ... rest of code } 

我知道我可以从构造函数初始化这个,但是这不符合我的需要(我想初始化并调用一些实用函数而不创build对象)。 C#支持这个吗? 如果是的话,我怎么能做到这一点?

提前致谢,

 public class Application() { static int attribute; static Application() { attribute = 5; } // ..... rest of code } 

你可以使用C#等价的静态构造函数 。 请不要将它与正则构造函数混淆。 一个常规的构造函数在它前面没有static修饰符。

我假设你的/ / //... rest of the code需要也运行一次。 如果你没有这样的代码,你可以简单地做到这一点。

  public class Application() { static int attribute = 5; } 

你可以写一个这样的静态构造块,

 static Application(){ attribute=5; } 

这是我能想到的。

在您的特定情况下,您可以执行以下操作:

 public class Application { static int attribute = 5; // ... rest of code } 

更新:

这听起来像你想调用一个静态方法。 你可以这样做,如下所示:

 public static class Application { static int attribute = 5; public static int UtilityMethod(int x) { return x + attribute; } } 

我发现其他有用的东西。 如果你的variables需要多个expression式/语句来初始化,使用这个!

 static A a = new Func<A>(() => { // do it here return new A(); })(); 

这种方法不限于类。