メソッドに渡されたパラメータは順番に評価されますか? 質問する

メソッドに渡されたパラメータは順番に評価されますか? 質問する

パラメータはメソッドに渡されたときに順番に評価されますか?

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)では、引数リストの式または変数参照が順番に評価される。左から右へ、 [...]

おすすめ記事