それはあなたが参照してくださいMSDNの記事からの、C#で、このメソッドの定義を見て助けるかもしれない:
public static IEnumerable<TResult> Select<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, TResult> selector
)
<
角括弧を>
このジェネリックメソッドの型パラメータを表し、そして私達ができます型パラメーターが何をしているのかを見るだけで、メソッドの目的を調べ始める。;
はのパラメータを見てみましょう:
- 最初のパラメータは
IEnumerable<TSource> source
ある - TSource
列挙を提供するソース、。
- 第2パラメータは
Func<TSource, TResult> selector
です。セレクタ関数はTSource
で、TResult
になります。
はその後、我々はその戻り値を見て(これはFunc
の定義を探索することによって確認することができます):
IEnumerable<TResult>
現在、このメソッドはTResult
列挙を返します知っています。
を要約すると、我々はTSource
の列挙をとる関数、および個々のTSource
アイテムを取り、TResult
アイテムを返し、その後、全体の選択機能がTResult
の列挙を返すセレクタ機能を持っています。
例:
具体的にこれを配置するには、TSource
はタイプPerson
(名前の人物を表すクラス、年齢、性別など)のものであり、TResult
がであることを言うことができますString
(人の名前を表す)と入力します。 Select
の機能には、Person
のリストと、Person
の名前だけが選択されるという機能を指定します。このSelect
関数の出力として、人々の名前だけを含むString
のリストが得られます。別に
:元のメソッドのシグネチャからパズルの
最後の部分は、上部に、最初のパラメータの前this
キーワードです。これはExtension Methodsを定義するための構文の一部であり、静的なSelectメソッド(ソース列挙とセレクタ関数を渡す)の代わりに、単にSelectメソッドを呼び出すことができますそれはSelect
メソッドを持っていました(そしてセレクタ関数の1つのパラメータだけを渡します)。
これがあなたにとってより明確になることを願っていますか?
この詳細な回答ありがとうございます。キーワード "メソッド"は単にEnumerable.Selectがメソッドであると言っていますか? 私はこのようなヘルプラインをどのように解読するのですか? –
はい、そうです。 MSDNトピックのタイトルは、メンバの名前、種類(メソッド、プロパティ、イベント、フィールド)、およびオーバーロードされたメソッドの場合、見ているオーバーロードのシグネチャを示しています。 (Enumerable.Selectの場合、マッピング関数の型によって区別される2つのオーバーロードがあります。) – itowlson