引用以下SE answer .
写作时
A = A ?? B;
和
一样if( null != A )
A = A;
else
A = B;
那是什么意思
if( null == A ) A = B;
在性能方面会是首选吗?
或者当同一对象处于 ??
表示法时,我可以假设编译器优化了代码吗?
最佳答案
不用担心性能,它可以忽略不计。
如果您对此感到好奇,请编写一些代码使用Stopwatch
测试性能并查看。不过,我怀疑您需要进行几百万次迭代才能开始看到差异。
您也永远不能假设事物的实现,它们将来可能会发生变化 - 使您的假设无效。
我的假设是性能差异可能非常非常小。我个人会选择空合并运算符以提高可读性,它很好,很简洁,并且很好地传达了这一点。我有时会这样做以进行延迟加载检查:
_lazyItem = _lazyItem ?? new LazyItem();
关于c# - 双问号 ('??' ) 与分配相同 var 时的对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11412639/