Loc*_*ith 15 c# null-coalescing-operator compiler-optimization
参考以下SE答案.
写作时
A = A ?? B;
Run Code Online (Sandbox Code Playgroud)
它是一样的
if( null != A )
A = A;
else
A = B;
Run Code Online (Sandbox Code Playgroud)
这是否意味着
if( null == A ) A = B;
Run Code Online (Sandbox Code Playgroud)
性能明智吗?
或者我可以假设编译器在??表示相同对象时优化代码?
Ada*_*rth 12
不要担心性能,它可以忽略不计.
如果您对此感到好奇,请编写一些代码来测试性能,Stopwatch并查看.我怀疑你需要做几百万次迭代才能开始看到差异.
你也可以永远不会假设事情的实施,他们将来可能会改变 - 使你的假设无效.
我的假设是性能差异可能非常非常小.为了便于阅读,我会选择空合并操作符,它很好并且很简单,并且很好地传达了这一点.我有时会进行延迟加载检查:
_lazyItem = _lazyItem ?? new LazyItem();
Run Code Online (Sandbox Code Playgroud)