7
實例類的靜態成員是否只與實例本身一樣存在,或者靜態成員是否在整個應用程序的整個生命週期中都存在?例如,假設我有一個Hashtable作爲一個靜態屬性。如果我從一個「實例」向它添加項目,它們是否可以從另一個「實例」獲得?實例類的靜態成員
實例類的靜態成員是否只與實例本身一樣存在,或者靜態成員是否在整個應用程序的整個生命週期中都存在?例如,假設我有一個Hashtable作爲一個靜態屬性。如果我從一個「實例」向它添加項目,它們是否可以從另一個「實例」獲得?實例類的靜態成員
他們住在AppDomain
的整個生命週期中。 (對於Windows應用程序,這通常是過程的整個生命週期,但可能並不是這樣,具體取決於您在做什麼,AppDomains
會在ASP.NET中定期回收。)
不要將靜態變量視爲在實例之間共享 - 將它們視爲屬於類型而不是任何特定實例。當您有時從未創建任何實例時,這可以更容易理解事情的工作方式。
例如:
class Test
{
static int x = 0;
static void Main()
{
x = 10;
Console.WriteLine(x);
}
}
有沒有實例圍繞「共享」 Test.x
- 不過沒關係,因爲它與類型Test
相關,而不是與實例Test
。
你可能會認爲這是一個非常微妙的區別,但它是我發現有用的。
我傾向於將其與「與所有實例共享的類型_and_」關聯起來。 – 2009-05-05 19:39:21