私は誰かが何を説明できるかどうか、そしてそれがいくつかの明確な例とともにどのように使用されているのかを説明できるかどうか疑問に思っていました。Funcの説明
Funcの説明
答えて
あなたは一般的には、デリゲートに精通していますか?私はdelegates and eventsについてのページを持っていますが、そうでないと助けになるかもしれませんが、2つの違いを説明するのに役立ちます。
Func<T, TResult>
はちょうどジェネリックデリゲートである - それは、宣言に対応する型引数(int
とstring
)で型パラメータ(T
とTResult
)を置き換えることにより、任意の特定の状況で何を意味するのかうまく。 Func<int, string>
が機能int
引数を取り、string
を返すを表しデリゲートである、言い換えれば
string ExpandedFunc(int x)
:私はまた、混乱を避けるために、それを名前を変更しました。
Func<T, TResult>
は、投影と述語の両方でLINQでよく使用されます(後者の場合、TResult
は常にbool
です)。たとえば、Func<int, string>
を使用して一連の整数を一連の文字列に投影することができます。通常、関連するデリゲートを作成するためにLINQで使用されているラムダ式:
Func<int, string> projection = x => "Value=" + x;
int[] values = { 3, 7, 10 };
var strings = values.Select(projection);
foreach (string s in strings)
{
Console.WriteLine(s);
}
結果:
Value=3
Value=7
Value=10
int
をパラメータとして受け取り、string
の値を返すデリゲートです。ここで
は、その使用方法の一例です:
using System;
class Program
{
static void Main()
{
Func<Int32, String> func = bar;
// now I have a delegate which
// I can invoke or pass to other
// methods.
func(1);
}
static String bar(Int32 value)
{
return value.ToString();
}
}
ありがとうございます。 bar(1)の代わりにfunc(1)を書くことを意味しましたか? – zSynopsis
はい私はしました!訂正ありがとう! –
Func<int, string>
はint型を食べると文字列を返します。だから、intを食べて文字列を返すのは何ですか?どうですか...
public string IntAsString(int i)
{
return i.ToString();
}
ここで、intsを取得して文字列を返す関数を作成しました。どうすれば使えますか?
var lst = new List<int>() { 1, 2, 3, 4, 5 };
string str = String.Empty;
foreach(int i in lst)
{
str += IntAsString(i);
}
// str will be "12345"
セクシーではありませんが、それは多くのトリックが基づいているという単純な考えです。さて、代わりにFuncを使ってみましょう。代わりに、各部材にIntAsStringを呼び出す
Func<int, string> fnc = IntAsString;
foreach (int i in lst)
{
str += fnc(i);
}
// str will be "1234512345" assuming we have same str as before
、Iは、(メソッドへのこれらの参照はdelegates呼ばれる)FNCと呼ばれるそれへの参照を作成し、代わりにそれを使用します。 (fncはintsを取り、文字列を返します)。
この例は、あまりセクシーではありませんが、あなたが見ることになる巧妙なものの大部分は、関数、代理人、およびextension methodsという単純な考え方に基づいています。
私が見たこの材料の中で最高のプライマーの1つはhereです。彼はもっと多くの本物の例を持っている。 :)
私はこの説明が好きです –
@Therealnapster私はそれも好きですが、私はあなたのより多くの名前が好きです。 – BKSpurgeon
- 1. veins/sumo「hello world」の説明の説明
- 2. 説明方法説明rmarkdown vignette
- 3. 説明
- 4. 説明
- 5. 説明
- 6. 説明
- 7. 説明
- 8. 説明
- 9. 説明
- 10. ArrayListの説明
- 11. プロローグコードの説明
- 12. ダンジョンゲームソリューションの説明
- 13. インパラクエリメタデータの説明
- 14. PowerShellの - 説明
- 15. ハートビートの説明
- 16. INFORMATION_SCHEMA.RIGHTSの説明
- 17. リーダークラスタリングアルゴリズムの説明
- 18. デバイスリグレッションテストの説明
- 19. dFdxの説明
- 20. VHDLの説明
- 21. ダイナミックプログラミングソリューションの説明
- 22. concatMapの説明
- 23. テンソルフローエンコーダーの説明
- 24. オフセットアルゴリズムの説明
- 25. アリストテレスナンバーパズルの説明
- 26. スウィフトシンタックスの説明
- 27. SQLの説明
- 28. ダイナミックメタの説明
- 29. ハイレベルの説明
- 30. フィールドの説明
"つまり、int型の引数をとり、文字列を返す関数を表すデリゲートです。" 他人の混乱を避けるために、Func ではなく、Funcについてここで話していることを明確にします。 ジェネリック型とデリゲートを理解しているのは明らかですが、それがない人は、Func がint引数をとり、文字列を返す関数に委任しています。 –
私は後でPCに戻ったときに明確になります。 –
Downvoters:理由を説明してください... –