我在stackoverflow中查看是否將null合併運算符放在訪問器方法中有任何性能影響。null訪問器方法中的空合併運算符
前:我
private Uri _Url;
public Uri Url
{
get
{
return _Url = _Url ?? new Uri(Utilities.GenerateUri());
}
}
甚至不知道如果語法是正確的,但是當我調試,私營對象設置:
private Uri _Url;
public Uri Url
{
if(_Url == null)
_Url = new Uri(Utilities.GenerateUri());
return _Url;
}
後。
在任何人問及做什麼的時候,我們在內部辯論是否爲了可讀性而寫(第一個看起來更易讀)或寫性能。
我不知道編譯器是否會優化??總是比手動空檢查更好。微優化不好,但我只是好奇
我很確定這兩個產生[幾乎]相同的IL。不幸的是,我的環境並沒有給我檢查的可能性。作爲一項規則,除非性能至關重要,否則請務必閱讀。 – Leri
基於純粹意見的問題 - 挑選更喜歡的版本。如果您認爲有任何性能影響 - 衡量或看看IL。 (我預計幾乎爲零的差異......但不會對任何結果下注...一個額外的任務不太可能會造成任何可衡量的影響) –