2017-10-16 46 views
2

我試圖在youtube中實現example,導師說得對,但是出現錯誤。
我已經有一個私人構造函數,我不能在我的代碼中有公共構造函數。懶惰初始化類型沒有公共參數的構造函數

private static int _InstanceCount = 0; 

private SingletonDemo1() 
{ 
    _InstanceCount++; 
    Console.WriteLine("Instance Count: " + _InstanceCount.ToString()); 
} 

private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>(); 

public static SingletonDemo1 Instance 
{ 
    get 
    {        
     return _Instance.Value; 
    } 
} 

回答

2

根據需要手動初始化懶惰的構造函數的對象,就像在演示視頻

private static readonly Lazy<SingletonDemo1> _Instance = new Lazy<SingletonDemo1>(() => new SingletonDemo1()); 

注意使用的工廠函數的例子。

沒有它,代碼會嘗試使用反射來初始化對象,但正如您已經聲明構造函數是私有的,所以它會失敗。這就是爲什麼您需要告訴Lazy如何在需要時創建實例。

相關問題