从Java
转到C#
我有以下问题:
在java中,我可以执行以下操作:
public class Application {
static int attribute;
static {
attribute = 5;
}
// ... rest of code
}
我知道我可以从构造函数初始化它,但这不符合我的需要(我想初始化并调用一些实用程序函数而不创建对象)。 C#支持这个吗?如果是,我该如何完成?
提前致谢,
答案 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();
}
}
}
输出:
这是静态构造函数。
这是主要功能。