無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

LINQをつつく2−匿名型。型推論。オブジェクト初期化子。細かい事言わさないで!

前回簡単なLINQ to Objectを紹介したけど、多くの人がC#C++/CLIの違いが大きかった事に驚いたと思う。まだ見ていない場合は見て♪見て♪C#とC++/CLIを知らない人が見てもC++/CLIの煩雑さが伝わると思うピヨ。ボクは同じC系言語で何故こんなにも違うのか気になって調べたピヨ。その調査の結果、幾つかの機能がC++/CLIに足らないのが原因だという事がわかったピヨォ。今回からはその機能をつついていくピヨッォォ。
その第一弾は、型名を省略する機能ピヨ。これはスクリプト言語によく見られる機能だね。型推論匿名型があるピヨ。C#とVB.NET実は細部が違うんだけど、主旨や狙いは同じでLINQの記述を助ける技術なんだ。勿論、LINQ以外で使ってもいいんだけど、 可読性を下げる から多用は絶対に駄目ピヨォッッッッ!これはサボるための機能じゃないんだよ。これらの機能は次の様に使う事を想定されているんだ。


//C++/CLIボクもう疲れたよ・・・
 IEnumerable <  String^ > ^ result = 
        Enumerable::Select <  String^, String^ > (oresult, func2);

//C#有難う!これなら大丈夫!
var result = Enumerable.Select <  string, string > (oresult, func2);

'VBも有難う!ちょっと生産性が上がったよ!
Dim result =  Enumerable.Select ( Of string, string) (oresult, func2)


この例を見たらやっぱりさぼりジャン!って思うだろうけど、LINQにおけるこの機能は非常に重要なものなんだ。この機能がないとクエリ式が複雑で生産性が低いものになっちゃうんだ。生産性を上げるためにLINQを使っているんだから、生産性を下げてしまっては元もこうもないよね。VB.NETとC#の詳しい説明は後で書いてここにリンクを張るピヨ。もしかしたら、他の言語も書くかもしれないピヨ。


別窓 | LINQ | コメント:3 | トラックバック:0 | ∧top | under∨
<<C#を咥えてLINQをつつく1−型推論。そこまで指定しなくてもわかるよね? | 無差別に技術をついばむ鳥 | 中の人の徒然草61>>

この記事のコメント

匿名データ型は違うんじゃないですか?

VBはローカル型の推論
http://msdn.microsoft.com/ja-jp/library/bb384937.aspx

C#は暗黙的に型指定されるローカル変数
http://msdn.microsoft.com/ja-jp/library/bb384061.aspx

と訳されていますね。
2008-08-11 Mon 12:46 | URL | かるあ #-[ 内容変更]
うん違うよ。

「実は細部が違うんだけど、主旨や狙いは同じでLINQの記述を助ける技術なんだ。」

ピヨ

2008-08-11 Mon 17:03 | URL | インドリ #-[ 内容変更]
かるあさん、済みません。
かるあさんが言っている部分が今わかりました。
VB.NETとC#が少し機能が違うと書きたかったのに、違うこと書いていましたw
今訂正しました。
2008-08-11 Mon 17:14 | URL | インドリ #-[ 内容変更]
∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |