静态代码块
从Java
到C#
我有以下问题:在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(); })();
这种方法不限于类。