例えばLinqを使ってみようと思ったけど、インテリセンス(入力補助)に出てこなくて「なぜか使えない!?」と悩んでいる方などに。
Linqに限らず拡張メソッドの使い方は
・usingディレクティブを追加して名前空間を指定する
・プロジェクトの「参照設定」にそのアセンブリへの参照を追加する
を行えば使えるようになります。
Listクラスの例
例としてリストクラスを挙げてみます。
https://msdn.microsoft.com/ja-jp/library/6sh2ey19(v=vs.110).aspx
Listクラスの拡張メソッドを見てみます。
Linq関連のメソッドは拡張メソッドがずらっと並んでいますね。例えばここにある拡張メソッドのAnyメソッドを使いたいとします。
Anyメソッドへのリンクをクリックして、詳細を見てみます。
名前空間: System.Linq
これは、ソースファイルの先頭に「using System.Linq;」が必要なことを意味します。
Linq系なら最近のVisualStudioのテンプレートですでに追加されてるんですけどね。VisualStudioのバージョンが古いと「using System.Linq;」を自動挿入してくれなくて、手動で追加する必要があったりします。
アセンブリ: System.Core (System.Core.dll 内)
そのプロジェクトの参照設定に「System.Core」への参照が追加されていることが必要なことを意味します。
適当なコンソールアプリの例
using System; using System.Collections.Generic; using System.Linq;// これが必要 using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var list = new List<string>() { "あ", "い", "う", }; bool res = list.Any(x => x == "え");// 使えてます Console.WriteLine(res.ToString());// False // コンソールアプリで試しているとき、 // こういうので止めておかないと超速で処理が終了して画面が閉じる Console.ReadLine(); } } }
これで、拡張メソッドのAnyが使えるようになりました。
コンソールアプリで試しているとき、Console.ReadLineメソッドなどで止めておくと確認しやすいです(エンターキーを叩くと画面を閉じる)。止めたいところにブレークポイントを貼っておくでも同じですが…