-1

次のコードは、次の Web ページから取得したものです: http://msdn.microsoft.com/en-us/magazine/cc188707.aspx

int[] values = new int[] {1, 2, 3, 4, 5}; 
IEnumerator e = ((IEnumerable)values).GetEnumerator(); 
while(e.MoveNext()) 
{ 
Console.Write(e.Current.ToString() + " "); 
}

Array クラスが IEnumerable にキャストされるのはなぜですか? Array クラスは、Web ページhttp://msdn.microsoft.com/en-us/library/system.array.aspxに示されているように GetEnumerator を実装します。

4

1 に答える 1

0

それは VB ではなく、C# です。

配列を にキャストする理由はありませんIEnumerable。キャストの有無にかかわらず、まったく同じことを行います。

とにかく、列挙子を使用して配列をループするのは非効率的です。これは、オブジェクト内の各整数をボックス化するためです。ボクシングや不要な範囲チェックを行わずに値をループするコードを使用forまたは作成します。foreach

for (int i = 0; i < values.Length; i++) {
  Console.Write(values[i]);
  Console.Write(' ');
}

また:

foreach (int value in values) {
  Console.Write(value);
  Console.Write(' ');
}
于 2012-12-16T12:30:08.390 に答える