3
私はいつもこれについて混乱してきました。次のループを考える:.NETループの完全性101
int [] list = new int [] { 1, 2, 3 };
for (int i=0; i < list.Length; i++) { }
foreach (int i in list) { }
while (list.GetEnumerator().MoveNext()) { } // Yes, yes you wouldn't call GetEnumerator with the while. Actually never tried that.
- 【リスト】上記ハードコーディングされています。ループが繰り返し実行されている間にリストが外部で変更された場合、どうなりますか?
- [list]が読み取り専用プロパティであった場合はどうなりますか?
int List{get{return(new int [] {1,2,3});}}
?これはループを狂わせるだろうか?そうでなければ、各反復で新しいインスタンスを作成しますか?
もう1つのポイントは、配列の長さプロパティが不変。配列上で 'Length'を呼び出して特定の値を取得すると、その配列の' Length'への今後の呼び出しはすべて同じ値を返すことが保証されます。もちろん、インスタンス変数が配列型で、そのインスタンス変数が別の配列を指すように変更すると、その配列の長さは以前のものと異なる場合があります。 – supercat