1

yield returnコンセプトの正式名称は正確には何ですか?

public IEnumerable<T> Bar() {
    ...
    yield return foo;
    ...
}

私はそれが次のように呼ばれているのを聞いた(読んだ):

  • イテレータ
  • IEnumerabe
  • 発生器
  • <あなたの選択>

イテレータは、何かを反復する単なる「もの」ではありませんか?AList<T> であるIEnumerable<T>ため、同様に合理的ではないようです。

SOに関する多くの回答yield returnは、これら2つの用語のいずれかを使用することについて説明しています。

「ジェネレーター」はどうですか?それとも、ソースとしてデータ収集を必要としないフィボナッチ数など、「薄い空気から価値を引き出す」場合にのみ当てはまりますか?

4

3 に答える 3

5

言語固有ではない方法での一般的な概念として、「ジェネレーター」はおそらく最も一般的な用語です。これは、C#に精通していない人と話している場合に使用するものです。

メソッド自体は、C#仕様の用語ではイテレーターです。実装はイテレータブロックです。

C#4仕様のセクション10.14から:

イテレータブロック(§8.2)を使用して実装された関数メンバー(§7.5 )は、イテレータと呼ばれます。

これは、C#について具体的に話すときに使用する用語です。

于 2012-08-03T16:25:16.520 に答える
3

それが役立つプリンシパルは「コルーチン」です。ウィキペディアを参照してください。

コルーチンは、サブルーチンを一般化して、特定の場所で実行を一時停止および再開するための複数のエントリポイントを許可するコンピュータープログラムコンポーネントです。コルーチンは、協調タスク、イテレーター、無限リスト、パイプなど、より使い慣れたプログラムコンポーネントの実装に最適です。

于 2012-10-03T13:08:11.837 に答える
1

これはイテレータと呼ばれます。このMSDNページを確認してください。

イテレータは、yieldキーワードを使用して、配列またはコレクションクラスに対してカスタム反復を実行するメソッド、getアクセサ、または演算子です。

于 2012-08-03T16:26:06.383 に答える