我想了解下面3组代码段之间的区别:
private static FirstObject o = new FirstObject();
public class ClassA
{
}
//-----------------------------------------------------
public class ClassA
{
private static FirstObject o = new FirstObject();
}
//-----------------------------------------------------
public class ClassA
{
private static FirstObject o;
public ClassA
{
o = new FirstObject();
}
}
请帮助我理解这些内容,内存,性能和用法。
谢谢。
答案 0 :(得分:5)
无效,因为您无法在对象之外拥有变量
正确的方法 - 该类有一个静态成员,在第一次访问该类时初始化
非常糟糕,因为每次创建新对象时,都会重新创建静态对象。
答案 1 :(得分:1)
第一个选项不会编译。 C#中的静态变量必须限定为类或结构。
第二种选择是首选机制。
第三个选项是错误的,因为每次创建FirstObject
的实例时都会创建一个新的ClassA
,这几乎肯定是不你想要的。
第四种选择是利用静态构造函数,例如,
public class ClassA
{
private static FirstObject o;
static ClassA
{
o = new FirstObject();
}
}
如果FirstObject
存在一些特殊的构造约束,则此选项很有用。但是,在此示例中,选择选项2而不是选项4.只需知道选项4存在。
答案 2 :(得分:-1)
以下三个案例......