静态代码块

时间:2011-12-10 19:09:42

标签: c# .net static

Java转到C#我有以下问题: 在java中,我可以执行以下操作:

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

我知道我可以从构造函数初始化它,但这不符合我的需要(我想初始化并调用一些实用程序函数而不创建对象)。 C#支持这个吗?如果是,我该如何完成?

提前致谢,

5 个答案:

答案 0 :(得分:111)

public class Application() 
{     

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

您可以使用C#等效static constructors。请不要将它与常规构造函数混淆。常规构造函数前面没有static修饰符。

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

 public class Application()
 {     

    static int attribute = 5;
 }

答案 1 :(得分:12)

你可以像这样写一个静态构造函数块,

static Application(){
 attribute=5;
}

这是我能想到的。

答案 2 :(得分:2)

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

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;
    }
}

答案 3 :(得分:1)

我发现其他有用的东西。如果你的变量需要多个表达式/语句来初始化,请使用它!

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

这种方法不限于课程。

答案 4 :(得分:1)

-静态构造函数没有任何参数。
-静态类只能包含一个静态构造函数。
-当我们运行程序时,静态构造函数首先执行。

示例:

namespace InterviewPreparation  
{  
    public static class Program  
    {  //static Class
        static Program()  
        { //Static constructor
            Console.WriteLine("This is static consturctor.");  
        }  
        public static void Main()  
        { //static main method
            Console.WriteLine("This is main function.");  
            Console.ReadKey();  
        }  
    }  
}  

输出:
这是静态构造函数。
这是主要功能。