实例类的静态成员是否仅与实例本身一样存在,还是静态成员会在应用程序的整个生命周期中存在?
例如,假设我有一个 Hashtable 作为静态属性。如果我从一个“实例”向它添加项目,它们是否可以从另一个“实例”获得?
最佳答案
它们在 AppDomain
的整个生命周期中都存在. (对于 Windows 应用程序,这通常是进程的生命周期;但也可能不是,具体取决于您在做什么。AppDomains
在 ASP.NET 中定期回收。)
不要将静态变量视为在实例之间共享 - 将它们视为属于类型 而不是任何特定实例。当您有时从未创建任何实例时,这使您更容易理解事情是如何工作的。
例如:
class Test
{
static int x = 0;
static void Main()
{
x = 10;
Console.WriteLine(x);
}
}
周围没有实例可以“共享”Test.x
- 但没关系,因为它与类型 Test
相关联而不是使用 Test
的实例 .
您可能会说这是一个非常微妙的区别,但我发现它很有用。
关于c# - 实例类的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/826555/