一方、Queueではインデクサがサポートされないのでfor文による列挙はできません。 for文でインデックスを用いた列挙を行うためには、Queueを配列に変換してから列挙するか、LINQの拡張メソッドSelectを使って次のようにします。
LINQのSelect拡張メソッドを使ってQueueに対してインデックス付きの列挙を行う
using System;
using System.Collections.Generic;
using System.Linq;
class Sample {
static void Main()
{
var q = new Queue<string>();
q.Enqueue("Alice");
q.Enqueue("Bob");
q.Enqueue("Charlie");
// Selectメソッドを使ってQueueの要素をインデックス付きで列挙する
foreach (var pair in q.Select((e, i) => new {Element = e, Index = i})) {
Console.WriteLine($"{pair.Index} => {pair.Element}");
}
}
}
実行結果
0 => Alice 1 => Bob 2 => Charlie