sta*_*ica 2 c# lazy-evaluation null-coalescing-operator
问题的标题说明了一切.在C#表达式中a ?? b,b始终是求值,还是仅在a求值时null?
我对此感到好奇,因为在评估右侧表达可能有副作用或评估可能计算成本高昂的情况下,这可能很重要.
右侧??是懒洋洋地评估; 也就是说,只有当左侧的表达式已经评估时,它才会被评估null.这很容易测试:
bool rhsExpressionWasEvaluated = false;
bool _ = (bool?)true ?? (rhsExpressionWasEvaluated = true);
Debug.Assert(!rhsExpressionWasEvaluated);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
619 次 |
| 最近记录: |