3 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
通常,當(dāng)您想在第一次實(shí)際使用某個(gè)實(shí)例時(shí)實(shí)例化它。這將創(chuàng)建它的成本延遲到需要時(shí)/而不是始終產(chǎn)生成本。
通常,當(dāng)可以使用或不使用該對(duì)象并且構(gòu)造它的成本很重要時(shí),這是優(yōu)選的。

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
您應(yīng)該嘗試避免使用Singleton,但是如果需要,Lazy<T>可以輕松實(shí)現(xiàn)懶惰的,線程安全的Singleton:
public sealed class Singleton
{
// Because Singleton's constructor is private, we must explicitly
// give the Lazy<Singleton> a delegate for creating the Singleton.
static readonly Lazy<Singleton> instanceHolder =
new Lazy<Singleton>(() => new Singleton());
Singleton()
{
// Explicit private constructor to prevent default public constructor.
...
}
public static Singleton Instance => instanceHolder.Value;
}
- 3 回答
- 0 關(guān)注
- 803 瀏覽
添加回答
舉報(bào)