null合体演算子をアクセサーメソッド内に配置するとパフォーマンスに影響があるかどうか、stackoverflowで調べていました。
前:
private Uri _Url;
public Uri Url
{
if(_Url == null)
_Url = new Uri(Utilities.GenerateUri());
return _Url;
}
後:
private Uri _Url;
public Uri Url
{
get
{
return _Url = _Url ?? new Uri(Utilities.GenerateUri());
}
}
構文が正しいかどうかもわかりませんが、デバッグするとプライベート オブジェクトが設定されます。
誰かがそれを行う意味を尋ねる前に、読みやすさのために書くか (最初の方が読みやすいように見えます)、パフォーマンスのために書くかを社内で議論していました。
コンパイラが最適化するかどうかわかりません?? 常に手動で null チェックを行うよりも優れています。マイクロ最適化は悪いですが、私はただ興味があります