|
|
連載:[完全版]究極のC#プログラミング
Chapter14 拡張メソッド
川俣 晶
2010/03/01 |
![](/fdotnet/extremecs/index/extremecs_m.jpg) |
|
14.13 なぜ「using System.Linq;」なのか?
ここまで見てきて、ぜひ使いたいというメソッドが見つかった読者もいると思う。しかし、LINQは難しくて手が出ないと思っている読者もいるだろう。そういう読者は、LINQは使わないのにこれらのメソッドを使うために、「using System.Linq;」と書き込む必要があることに釈然としない感じを受けるかもしれない。しかし、これらは紛れもなくLINQを構成する一部なのである。
LINQといえば、
from 〜 in 〜 where 〜 select 〜
|
|
といったクエリ式を連想するかもしれないが、これはLINQのクエリ構文と呼ばれるものである。しかし、LINQにはこれとは別に「メソッド構文」というものがあり、メソッド呼び出しの連鎖としてクエリを記述できる。その際、上記リストにあるWhereメソッドなどが“まさにそのままメソッドとして”使用される。詳しくは、第16章で解説を行う。
つまり、これらのメソッドを使い始めたあなたにとって、LINQは縁遠いものではない。すでにLINQの世界に踏み込んでいるのである。
【Exercise】練習問題
string型(System.Stringクラス)が持つLengthプロパティが返す値を、シフトJIS表現でのバイト数とするように振る舞いを変えたいと思った。この意図を拡張メソッドを用いて実現できない理由として、正しいものが2つある。それはどれか?
- 拡張メソッドは、既存の機能を置換できない
- string型は、シールクラスなので拡張できない
- 拡張メソッドは、LINQ対応のコレクションしか拡張できない
- 拡張メソッドは、メソッドのみ可能でありプロパティは対象外
- string型が定義されるときに、using文を用いてインポートされていない
◎解答:「1、4」(この行をマウスで選択してください)![End of Article](/fdotnet/images/icon_end.gif)
Insider.NET 記事ランキング
本日
月間