2012年03月28日
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# LINQラムダ式入門 1. 便利なとこから始めよう
C# LINQラムダ式入門 2. 次のLINQ構文
C# LINQラムダ式入門 3. 後はとりあえず俯瞰してみる
C# LINQラムダ式入門 4. LINQの引数の型を理解する
C# LINQラムダ式入門 5. ラムダ式をもう少し詳しく見てみる
Whereさんとか、FirstOrDefaultさんの
引数の型について見ていきます。
が、そのためにはまず、デリゲートについて。
さて…
デリゲートってなんだー?!
関数ポインタみたいなもんでしょ、とか、
メソッドを格納する変数の型でしょ、とか。
概ね、その理解で困ることはないと思います。
ただ、教科書に書いてあるような
「デリゲートの宣言をして、メソッドを登録してデリゲートを呼び出すのだ!」
…などと言った使い方はほぼしないと思います。
何をしないかというと、宣言ですね。
これ↓
× delegate bool MyDelegate(int a);
まず、宣言めんどくさい。
次に、宣言がクラスフィールドとかと混ざって、
こんなもの書いてあったらコードが見づらくなる。
代わりに何を使うと言えば、Funcさんです。
var myDelegate = new Func
このように、デリゲートを宣言しなくても、
同じ働きをするコードを書くことができます。
何がすごいってこのFuncさん、
Func<"第一引数の型", "第二引数の型",・・・, "戻り値の型">
とすることで、任意のデリゲート型を作れてしまうことです。
引数の型は任意だし、数も16個まで指定することができます。
(これで事足りない数の引数のメソッドは作るべきではない!)
delegate int MyDelegate2(double a, double b);
→Func< double, double, int >で代用!
みたいな感じで対応することを覚えて下さい。
戻り値を最初に書くか最後に書くかを
最初はド忘れするので(僕だけ?)、
プログラマ的な感覚として
"戻り(return)は最後"と覚えておいて下さい。
というわけで、デリゲートは、
自分で宣言せずに万能な入れ物であるFuncさんに任せましょう。
Funcさんすげー。
さて、Funcさんに親近感をいだいてもらえたところで、
".where("と書いたときのインテリセンスを思いだしてみましょう。
はい、思い出せないですよね。画像をはっておきます。
「あー、引数の型にわけわからんこと書いてあったと思ったら、
Funcさんあなただったのね。」
と思えたら、今回は満足して下さい。
次回は、各種Funcさんに対応するラムダ式の
書き方について解説したいと思います。
[インデックス]
C# LINQラムダ式入門 1. 便利なとこから始めよう
C# LINQラムダ式入門 2. 次のLINQ構文
C# LINQラムダ式入門 3. 後はとりあえず俯瞰してみる
C# LINQラムダ式入門 4. LINQの引数の型を理解する
C# LINQラムダ式入門 5. ラムダ式をもう少し詳しく見てみる
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
投稿者:勝綾正テル|21:52|C# LINQ ラムダ式 入門
この記事へのコメント