static class 中的静态变量是 class 独有的吗?
Are static variables inside static classes unique to the class?
我创建了一些用于缓存对象的静态实用方法。
public static class CacheProductView
{
static object _lock = new object();
static string _key = "product-view";
public static IEnumerable<Product> Select()
{
var obj = CacheObject;
if (obj == null)
{
lock (_lock)
{
obj = CacheObject;
if (obj == null)
{
obj = CreateCacheObject();
}
}
}
}
}
这是我使用的方法中的一段代码。如您所见,我使用 classic .Net 缓存模式,但是我对 static classes.
中的静态变量有疑问
静态变量在静态class中是否唯一?例如,如果我克隆 class 并将 'Product' 替换为 'Order',_lock 和 _key 对象的范围是否会限定到 class 或应用程序。显然,如果答案是后者,则需要提供唯一的名称。
感谢所有帮助和建议。
回答您的问题 - 静态字段和属性是按类型定义的。
关于类型和实例中的内容的精彩文章
http://www.codeproject.com/Articles/20481/NET-Type-Internals-From-a-Microsoft-CLR-Perspecti
除此之外 - 您呈现的模式不是一个好方法。
我创建了一些用于缓存对象的静态实用方法。
public static class CacheProductView
{
static object _lock = new object();
static string _key = "product-view";
public static IEnumerable<Product> Select()
{
var obj = CacheObject;
if (obj == null)
{
lock (_lock)
{
obj = CacheObject;
if (obj == null)
{
obj = CreateCacheObject();
}
}
}
}
}
这是我使用的方法中的一段代码。如您所见,我使用 classic .Net 缓存模式,但是我对 static classes.
中的静态变量有疑问静态变量在静态class中是否唯一?例如,如果我克隆 class 并将 'Product' 替换为 'Order',_lock 和 _key 对象的范围是否会限定到 class 或应用程序。显然,如果答案是后者,则需要提供唯一的名称。
感谢所有帮助和建议。
回答您的问题 - 静态字段和属性是按类型定义的。
关于类型和实例中的内容的精彩文章
http://www.codeproject.com/Articles/20481/NET-Type-Internals-From-a-Microsoft-CLR-Perspecti
除此之外 - 您呈现的模式不是一个好方法。