パラメータはメソッドに渡されたときに順番に評価されますか?
Java の場合、それは常に当てはまりますが、C の場合は当てはまりません。しかし、C# の場合の答えは何でしょうか?
サンプル
string.Format("byte1={0} byte2={1} byte3={2}",
getNextByte(),
getNextByte(),
getNextByte());
int pos=0;
byte[] arr=new byte[] {1,2,3,4,5,6};
byte getNextByte()
{
return arr[pos++];
}
このサンプルは機能しますが、それは単なる運でしょうか、それともルールでしょうか?
ベストアンサー1
はい、メソッドに引数として渡される式は常に左から右に評価されます。
C# 4.0 言語仕様より:
7.5.1.2 引数リストの実行時評価
関数メンバー呼び出しの実行時処理(§7.5.4)では、引数リストの式または変数参照が順番に評価される。左から右へ、 [...]