我需要一個單例代碼。我讀喬恩斯基特的page對單身和選擇這種模式(#4)根據他的建議:基於Jon Skeet的Singleton的Simpleton Singleton
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton();
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Singleton(){}
private Singleton(){}
public static Singleton Instance
{
get
{
return instance;
}
}
}
然後,我通過幾個步驟去修改這個適合我的情況:
第1步:我不需要一個懶惰的實現,所以我拿出靜態構造函數(如由Jon在他的文章的末尾建議):
步驟2:我再換出了「實例」 Singleton
類與Logging
類我一起工作:
public sealed class Singleton
{
private static readonly Logging instance = new Logging();
private Singleton(){}
public static Logging Instance
{
get
{
return instance;
}
}
}
步驟3: ReSharper的,然後告訴我,我應該使用自動屬性我的「實例」屬性:
public sealed class Singleton
{
private Singleton(){}
public static Logging Instance { get; } = new Logging();
}
第4步: ReSharper的,然後告訴我,我應該關掉這個靜態類:
public static class Singleton
{
public static Logging Instance { get; } = new Logging();
}
我留下的東西與原來的很不一樣。我知道在設置一個線程安全的Singleton時很容易出錯。
所以我想問:我的任何一個步驟是否使我的課不再是一個很好的Singleton實現?
這根本不是Singleton實現。你創建的只是**另一個**類型的共享靜態變量。 –