[英]C# singleton instance is never null
我試圖在Azure webjob中實現單例模式。 在本地調試實例永遠不會為null。 它始終設置為單例對象本身。 我覺得我在這里遺漏了一些殘酷的東西。
public sealed class HubErrorList
{
private static volatile HubErrorList instance;
private static object syncRoot = new Object();
private HubErrorList() {}
public static HubErrorList Instance
{
get {
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
{
instance = new HubErrorList();
}
}
}
return instance;
}
}
}
在訪問該屬性之前,該實例將保持為null。 根據您檢查的方式,您的工具可能會導致這種差異。
話雖這么說,一個更簡單,更好的“懶惰初始化”單例模式將是使用Lazy<T>
代替:
public sealed class HubErrorList
{
private static Lazy<HubErrorList> instance = new Lazy<HubErrorList>(() => new HubErrorList());
private HubErrorList() {}
public static HubErrorList Instance { get { return instance.Value; } }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.