2013-03-10 132 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

相关问题