在static class
你可以只有声明静态成员(方法,字段,属性)。在非静态类中,可以声明静态成员和实例(非静态)成员。另外,你不能从一个静态类派生一个类,或者直接使用它,或者将它作为一个类型参数使用。
当你定义一个静态成员:
public static B b = new B();
...那么你是说B
类型的本场b
只属于你宣布它在类型的非静态字段的归属。到类型的一个实例。
例如,如果您有:
class MyClass
{
public static string myStaticString = "";
public string myInstanceString = "";
}
然后如果你改变了myInstanceString
,它的价值将只用于特定实例改变:
MyClass myInstance1 = new MyClass();
MyClass myInstance2 = new MyClass();
myInstance1.myInstanceString = "1";
myInstance2.myInstanceString = "2";
Console.WriteLine(myInstance1.myInstanceString); // Prints: 1
Console.WriteLine(myInstance2.myInstanceString); // Prints: 2
但是,如果你改变myStaticString
,其价值将改变为所有使用该类型的人:
MyClass.myStaticString = "1";
MyClass.myStaticString = "2";
Console.WriteLine(MyClass.myStaticString); // Prints: 2
而这与string
(或您的示例中的B
)是否被声明为static
完全无关。
一个是静态的,另一个不是? – Oded 2013-03-23 16:35:06