[英]Calling Multiple Singleton Instances
我有一個這樣的單身人士班
class Singleton
{
private static Singleton _instance = new Singleton();
public string Username { get; set; }
public string Password { get; set; }
public static Singleton Instance
{
get { return _instance ?? (_instance = new Singleton()); }
}
}
像這樣多次調用Singleton.Instance.X時,它是否仍然會影響性能?
private void Method()
{
Singleton.Instance.Username = "";
Singleton.Instance.Password = "";
}
或者這更好(&為什么)
private void Method()
{
Singleton singletoon = Singleton.Instance;
singletoon.Username = "";
singletoon.Password = "";
}
??
Instance
屬性中的內容是沒有意義的,因為您之前初始化了基礎字段。
您不必擔心性能,JIT編譯器很可能會對其進行優化。
整個情況看起來像過早的優化。 您當前的代碼真的遇到問題了嗎?
更新資料
要回答評論中提出的問題:
我會去
private void Method()
{
Singleton singletoon = Singleton.Instance;
singletoon.Username = "";
singletoon.Password = "";
}
但這不是因為性能,而是因為它更易於閱讀。
這種方法:
private void Method()
{
Singleton singletoon = Singleton.Instance;
singletoon.Username = "";
singletoon.Password = "";
}
最好是因為您不在getter中執行if語句。
在這種情況下:
private void Method()
{
Singleton.Instance.Username = "";
Singleton.Instance.Password = "";
}
您兩次調用getter,因此使用if條件(在您的情況下以'??'表示)。
盡管性能差異確實很小 ,尤其是在您的情況下。
順便說一句,無論如何,您都是靜態地初始化Singleton
_instance
因此不需要在吸氣器中執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.