を使用しIEnumerable
て一連の値、具体的には Excel のような列ヘッダーのリストを生成したいと考えています。
private IEnumerable<string> EnumerateSymbolNames()
{
foreach (var sym in _symbols)
{
yield return sym;
}
foreach (var sym1 in _symbols)
{
foreach (var sym2 in _symbols)
{
yield return sym1 + sym2;
}
}
yield break;
}
private readonly string[] _symbols = new string[] { "A", "B", "C", ...};
foreach
ループから値を取得すると、これはうまく機能します。しかし、私が望むのは、反復子ブロックをステート マシンとして使用し、ユーザー アクションに応答して次に使用可能な列ヘッダーを取得することです。そして、これは、生成された値を消費することであり、私が問題に遭遇した場所です。
これまで私は試しました
return EnumerateSymbolNames().Take(1).FirstOrDefault();
return EnumerateSymbolNames().Take(1).SingleOrDefault();
return EnumerateSymbolNames().FirstOrDefault();
var enumerator = EnumerateSymbolNames().GetEnumerator();
enumerator.MoveNext();
return enumerator.Current;
...しかし、これらのどれも機能していません。(すべて繰り返し「A」を返します。)この質問への回答に基づいて、私が望むことは可能でさえあると思います-その投稿への回答のいくつかは私の最後のものと同様のテクニックを示唆しています.
いいえ、これは宿題ではありません:)