-1

我在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());
    }
}

我什至不确定语法是否正确,但是当我调试时,私有对象已设置。

在有人问这样做有什么意义之前,我们在内部争论是为了可读性而编写(第一个对我来说看起来更具可读性),还是为了性能而编写。

不知道编译器会不会优化??总比手动空检查好。微优化不好,但我只是好奇

4

1 回答 1

2

你实际上可以这样写:

return _Url ?? (_Url = new Uri(Utilities.GenerateUri()));

就性能而言,它实际上与使用 if 是一样的,所以没有区别。

于 2013-10-23T07:02:30.930 回答