1

簡単な質問:

public void ChangeObject(MyClass a){
  a.property = 55;
}

public void Test(){
  List<MyClass> obj_list = get_the_list();
  foreach( MyClass obj in obj_list )
  {
      ChangeObject(obj);
  }
}

これにより、obj_list のすべての値がプロパティ 55 になりますか?

したがって、コードの別の場所で、「if(obj_list[5].property == 55){ print("YES"); }」を呼び出すと、ループ後に true になります。

それとも「ref」が必要ですか?ref を使用しようとすると、多くのエラーが発生するためです (反復値を変更できないため)。

4

1 に答える 1

3

これにより、obj_list のすべての値がプロパティ 55 になりますか?

はい -MyClass本当にクラスであると仮定します。リストが実際には住所録であると想像してください。すべてのページ (要素) に家の住所があります。リストには、実際の家自体は含まれていません - それらに到達するための方法です. foreachこのループは、「本の各ページについて、そのページに住所が記載されている家に行き、玄関に 55 と書いてください」と言っているようなものです。

それとも「ref」が必要ですか?

いいえ、それは参照によって変数を渡そうとします...そして反復変数は読み取り専用です。詳細については、C# でのパラメーターの受け渡しに関する私の記事を参照してください。

于 2013-10-02T17:47:42.200 に答える