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

広告

posted by fanblog

C# LINQラムダ式入門 1. 便利なとこから始めよう

C#は非常に書きやすいし、見やすい言語です。
が、LINQとラムダ式に関しては、
かなり特殊な見栄えでとっつきにくい。
これが、僕の第一印象です。

C#は、数年前に書き始めましたが、
最近やっと自分の中でこれらが馴染んだ気がするので、
少しずつ紹介していきたいと思います。

まず、初めてこれらのコードを見た人は、
二、三度見返したと思います。
「なんだ、これは…」
そう思ったでしょう。

今だから思うのですが、最初は無理に理解しようとしない方がいいと思います。
簡単便利な使い方から初めて、
自分の中で少しずつ咀嚼(そしゃく)するのがいいです。
最初に専門書の説明をだらだら見た結果、
僕は一時期LINQ嫌いになってしまいました。
だから、小難しいことは最初はやめましょう。

というわけで、最もわかりやすくて使いやすくて
使用頻度か高い(自分調べ)Whereさんから慣れ親しみ始めましょう。

次のようなコードがあるとします。

int[] ages = new int[]{11, 10, 21, 22, 30};
int sumOfAdultAges = 0;
foreach (int age in ages)
{
    if ( 20 <= age )
    {
        sumOfAdultAges+=age;
    }
}

要するに、foreach, ifパターンです。
これをLINQでかっこよく書くと、こうなります。

int[] ages = new int[]{11, 10, 21, 22, 30};
int sumOfAdultAges = 0;
foreach (int age in ages.Where(x => 20 <= x))
{
    sumOfAdultAges+=age;
}

なんか、かっこいいですよね。
多分、説明もいらないですよね。
え、いりますか?いや、体で覚えて下さい。
Whereの引数の型なんか無視、無視。

in 〜.Where(x => ・・・)

をインテリセンスの力を借りながら、書けるように
なればいいだけなんですから。
気をつけることは、
「・・・」部分にif ( )の中に書いていたものを書くぐらいですかね
このレベルであれば、ほどよくわかりよいですよね?

第一歩はここからで、これで十分です。
私が初めて実務で書いたLINQもこれが最初です。
「if 書いたらいいやん」と思かもしれません。
もちろん書いてもいいですよ。
ifで、書くほうがいいことだって多々あります。

ここで一つ大事なことなのですが、

Q. なぜLINQを使うのか?

ということです。答えは簡単。

A. LINQで書いたほうが、美しいから

LINQなんてただの表現手法の一つに過ぎません。
LINQがなくてもコードは書けます。
使うかどうかは、自身の美的感覚に従って下さい。(注1)

LINQで書いたほうが美しければ、LINQを使えばいいし、
LINQを使うと逆に見にくくなる場合は使うべきではない。


まぁ、そんなもんです。
難しく考える必要も、無理に使用する必要も、とりあえずはないですよ。


注1:美しく書く以外の目的もあるにはあります

最終的には、More Effective C#の内容を
読めるところまで手伝えたらなぁと思っています。
”美しく書く”以外の目的を早く知りたい人は、
More Effective C#をフライングして読んでみて下さい。
ただし、LINQに慣れてから読んで下さいね。
でなければ、消化不良を起こします。
私のように(笑)

More Effective C#

新品価格
¥3,780から
(2012/3/15 22:41時点)




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

この記事へのコメント

   
×

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