Possible Duplicate:
Are parameters evaluated in order when passed into a method?
Say I have
void foo (int x, int y)
and call it by:
foo(y: genNum(), x: genNum())
Does C# guarantee the evaluation order of x and y in this case?
According to the specification, arguments are always evaluated from left to right. Unfortunately, there are a few bugs in some corner cases in C# 4.0. See Eric Lippert's post at Are parameters evaluated in order when passed into a method? for more details.
As an aside, this is probably bad practice. If you want to guarantee the order that the arguments are evaluated, capture the result in a local variable first and then pass the results to the consuming method like:
int capturedY = genNum(); //It is important that Y is generated before X!
int capturedX = genNum();
foo(capturedX, capturedY);
I can't think of a good reason to not do it that way.