在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