C#空条件函数调用中是否会计算函数参数?
C#空条件函数调用的实参计算规则
在C#的空条件运算符(?.)调用中,实参不会总是被计算——当左侧对象为null时,整个调用表达式会直接短路,既不会执行目标函数调用,也不会计算传入的实参。
以你给出的代码示例obj?.foo(bar());为例:
- 若
obj不为null,会先执行bar()得到实参,再正常调用obj.foo(...); - 若
obj为null,程序会直接跳过foo的调用流程,bar()完全不会被执行。
这是C#空条件运算符的核心特性:短路求值,既能避免对象为null时的不必要计算,也能防止额外逻辑被误执行。
内容的提问来源于stack exchange,提问作者Nathan Phillips
相关产品推荐
相关产品推荐

