アフィリエイト広告を利用しています

広告

posted by fanblog

C# LINQラムダ式入門 4. LINQの引数の型を理解する

今回は今まで無視してきた
Whereさんとか、FirstOrDefaultさんの
引数の型について見ていきます。

が、そのためにはまず、デリゲートについて。

さて…
デリゲートってなんだー?!
関数ポインタみたいなもんでしょ、とか、
メソッドを格納する変数の型でしょ、とか。
概ね、その理解で困ることはないと思います。

ただ、教科書に書いてあるような
「デリゲートの宣言をして、メソッドを登録してデリゲートを呼び出すのだ!」
…などと言った使い方はほぼしないと思います。

何をしないかというと、宣言ですね。
これ↓

× delegate bool MyDelegate(int a);

まず、宣言めんどくさい。
次に、宣言がクラスフィールドとかと混ざって、
こんなもの書いてあったらコードが見づらくなる。

代わりに何を使うと言えば、Funcさんです。

var myDelegate = new Func( MyFunction );

このように、デリゲートを宣言しなくても、
同じ働きをするコードを書くことができます。
何がすごいってこのFuncさん、

Func<"第一引数の型", "第二引数の型",・・・, "戻り値の型">

とすることで、任意のデリゲート型を作れてしまうことです。
引数の型は任意だし、数も16個まで指定することができます。
(これで事足りない数の引数のメソッドは作るべきではない!)

delegate int MyDelegate2(double a, double b);
→Func< double, double, int >で代用!

みたいな感じで対応することを覚えて下さい。
戻り値を最初に書くか最後に書くかを
最初はド忘れするので(僕だけ?)、
プログラマ的な感覚として
"戻り(return)は最後"と覚えておいて下さい。

というわけで、デリゲートは、
自分で宣言せずに万能な入れ物であるFuncさんに任せましょう。
Funcさんすげー。

さて、Funcさんに親近感をいだいてもらえたところで、
".where("と書いたときのインテリセンスを思いだしてみましょう。
はい、思い出せないですよね。画像をはっておきます。



「あー、引数の型にわけわからんこと書いてあったと思ったら、
Funcさんあなただったのね。」

と思えたら、今回は満足して下さい。
次回は、各種Funcさんに対応するラムダ式の
書き方について解説したいと思います。

標準講座C# (Programmer’sSELECTION)




[インデックス]
C# LINQラムダ式入門 1. 便利なとこから始めよう
C# LINQラムダ式入門 2. 次のLINQ構文
C# LINQラムダ式入門 3. 後はとりあえず俯瞰してみる
C# LINQラムダ式入門 4. LINQの引数の型を理解する
C# LINQラムダ式入門 5. ラムダ式をもう少し詳しく見てみる

この記事へのコメント

   
×

この広告は30日以上新しい記事の更新がないブログに表示されております。