Tho*_*ing 6 c# named-parameters operator-precedence
可能重复:
在传递给方法时是否按顺序评估参数?
说我有
void foo (int x, int y)
并通过以下方式调用:
foo(y: genNum(), x: genNum())
在这种情况下,C#是否保证x和y的评估顺序?
根据规范,参数总是从左到右进行评估.不幸的是,在C#4.0的某些极端情况下存在一些错误.请参阅Eric Lippert在Are参数中的帖子,当传递给方法时按顺序进行评估?更多细节.
顺便说一句,这可能是不好的做法.如果要保证参数的计算顺序,请先将结果捕获到局部变量中,然后将结果传递给使用方法,如:
int capturedY = genNum(); //It is important that Y is generated before X!
int capturedX = genNum();
foo(capturedX, capturedY);
Run Code Online (Sandbox Code Playgroud)
我想不出一个不这样做的好理由.