我在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());
}
}
我甚至不确定语法是否正确,但是当我调试时,私有对象已设置。
在有人问起这样做有什么意义之前,我们在内部辩论是否为了可读性而编写(第一个看起来对我来说更具可读性),或者为了性能而写作。
我不知道编译器是否会优化?总是比手动空检查更好。微优化很糟糕,但我只是好奇
答案 0 :(得分:2)
您实际上可以将其写为:
return _Url ?? (_Url = new Uri(Utilities.GenerateUri()));
就性能而言,它实际上与使用if相同,所以没有区别。