IEnumeratorの簡単な使い方(例付き)
質問
をどのように使うか(なぜ使うかは別として)思い出すのに苦労しています。
IEnumerator
を C# で使用する方法 (理由ではなく) を思い出すのに苦労しています。 私は、初心者にすべてをうまく説明してくれる素晴らしいドキュメントを持つJavaに慣れています。ですから、どうか我慢してください。
私はこの掲示板の他の回答から学ぼうとしましたが、無駄でした。すでに前に質問された一般的な質問をするよりも、私は私のために物事を明確にするために具体的な例を持っています。
を渡される必要があるメソッドがあるとします。
IEnumerable<String>
オブジェクトを渡す必要があるメソッドがあるとします。 このメソッドが行うべきことは、文字を連結して
roxxors
という文字を各
String
をイテレータの最後に追加します。そして、この新しいイテレータを返します (もちろん、元の
IEnumerable
オブジェクトはそのまま残されます)。
どうすればいいのでしょうか? ここでの回答は、もちろん私以外にも、これらのオブジェクトに関する基本的な疑問を持つ多くの人の助けになるはずです。
どのように解決するのですか?
以下は
IEnumerator
. これらは、長さが必ずしも事前に分かっていないリストの値を取得するために使われます(分かっていても)。この言葉の由来は
enumerate
から来ており、「1つずつ数える、名前をつける」という意味です。
IEnumerator
と
IEnumerator<T>
が提供するのは、すべての
IEnumerable
と
IEnumerable<T>
インターフェース(後者はその両方を提供)を、.NETでは
GetEnumerator()
. これは重要なことで
foreach
文はこれらのインターフェイスメソッドを通して直接列挙子を操作するように設計されているからです。
ですから、例えば
IEnumerator enumerator = enumerable.GetEnumerator();
while (enumerator.MoveNext())
{
object item = enumerator.Current;
// Perform logic on the item
}
になる。
foreach(object item in enumerable)
{
// Perform logic on the item
}
あなたの特定のシナリオに関しては、.NETのほとんどすべてのコレクションが
IEnumerable
. そのため、次のようにすることができます。
public IEnumerator Enumerate(IEnumerable enumerable)
{
// List implements IEnumerable, but could be any collection.
List<string> list = new List<string>();
foreach(string value in enumerable)
{
list.Add(value + "roxxors");
}
return list.GetEnumerator();
}
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] 関数を終了するには?
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] async」と「await」の使い方とタイミング
-
[解決済み] リフレクションを使ってジェネリックメソッドを呼び出すにはどうしたらいいですか?
-
[解決済み] イールドリターン」の正しい使い方
-
[解決済み] LINQで.Firstと.FirstOrDefaultを使用するタイミングは?
-
[解決済み] 文字列の最初の文字を大文字にする(最大限のパフォーマンスを発揮する)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】.ToList(), .AsEnumerable(), AsQueryable()の違いは何ですか?