0

我创建了一些用于缓存对象的静态实用程序方法。

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();
                }
            }
        }
    }

}

这是我使用的方法中的一段代码。如您所见,我使用经典的 .Net 缓存模式,但是我对静态类中的静态变量有疑问。

静态变量在静态类中是唯一的吗?例如,如果我克隆该类并将“产品”替换为“订单”,那么 _lock 和 _key 对象是否会被限定为该类或应用程序。显然,如果答案是后者,则需要给出唯一的名称。

所有帮助和建议表示赞赏。

4

1 回答 1

0

回答您的问题 - 静态字段和属性是按类型定义的。

关于类型和实例的去向的好文章
http://www.codeproject.com/Articles/20481/NET-Type-Internals-From-a-Microsoft-CLR-Perspecti

除此之外-您呈现的模式不是一个好方法。

于 2015-03-17T11:46:26.877 回答