2013-03-10 179 views
-4

當我在一個類中聲明一個靜態變量然後多次實例化這個類時會發生什麼?非靜態類實例中的c#靜態變量的行爲是什麼?

靜態變量是否可以在所有實例之間共享?或者將爲每個類實例創建多個靜態變量?

+1

我認爲沒有理由downvote,不同的情況下,尤其是不支持的意見 – 2013-03-10 01:01:07

+2

無後顧之憂......我=白癡 – user1034912 2013-03-10 01:01:38

+0

@DavidL:您可以找到答案[MSDN](http://msdn.microsoft.com/en-us/library/vstudio/79b3xss3(v = vs.100).aspx),是不是所有實例共享的「static」定義? _「只存在一個靜態成員的副本,無論該類創建了多少實例」_ Imho這只是一個rtfm問題:['static'](http://msdn.microsoft.com/en-us /library/98f28cdx(v=vs.110).aspx):_「雖然類的實例包含類的所有實例字段的單獨副本,但每個靜態字段只有一個副本。」_ – 2013-03-10 01:09:22

回答

8

C#中的static字段在類型的所有實例中共享。無論您實例化類型的次數,每個AppDomain(通常每個進程一個AppDomain)將只有一個靜態字段實例。

對此的一個例外是泛型類型。當在泛型中有一個靜態字段時,每個泛型實例化將會有一個靜態字段的實例。

class Container<T> { 
    internal static T Field; 
} 

現在Container<int>Container<string>將有Field

+0

真棒謝謝! – user1034912 2013-03-10 01:02:21

+1

感謝您在仿製藥上添加該片。非常有用的信息! – 2013-03-10 01:02:58

相關問題