特集C#&VBジェネリック超入門(前編)ジェネリック・クラスで変わる
デジタルアドバンテージ 遠藤 孝信 |
![]() |
|
|
|
ジェネリック・クラスの記述方法
ここで簡単に、ジェネリック・クラスの記述方法についても見ておきましょう。
以下は、Listジェネリック・クラスの仕様をまねたMyListジェネリック・クラスの実装例です。取りあえずAddメソッドとインデクサだけを実装しています。
|
||
| ジェネリックを使用したMyListクラスの実装 | ||
| 格納する要素が1000を超えた場合にはエラーとなる。またインデクサでのインデックス番号の範囲チェックも行っていない。 |
このように、ジェネリック・クラスの記述では、型パラメータを「T」とした場合、Tというクラスがあるかのようにフィールドやメソッドを記述していきます。
これまでに「T」の部分が具体的なクラス名になっているようなクラスを記述されたことがあるかもしれません。例えば「T」の部分がすべて「Employee」になっているようなEmployeeクラス専用のコレクション・クラスなどです。
ジェネリックの導入により、その「T」部分が自動的に置き換えられる、汎用的なコレクション・クラスが記述可能となったわけです。
なお、型パラメータである「T」は単なるパラメータの名前であり、メソッドのパラメータと同じで、好きな名前を付けることができます。ただし名前付けのガイドラインは用意されています*。型パラメータが1つだけの場合は「T」がよく用いられます。
| *「型パラメータの名前付けのガイドライン」を参照してください。 |
念のために、上記のMyList<T>クラスを、文字列型とDateTime構造体で使用したサンプル・プログラムを次に示しておきます。
|
||
| MyListジェネリック・クラスを使用したサンプル・プログラム |
【コラム】 型パラメータの制約
ジェネリック・クラスを記述するとき、型パラメータに指定される型を制限する必要が出てくる場合があります。
例えば、型パラメータの型(以下、Tと省略)のオブジェクトのメソッドを呼び出すようなコードを記述する場合、Tには必ずそのメソッドが実装されていなければ困ります。あるいは、Tのインスタンスを生成する(new T()する)ようなコードを記述する場合には、Tにパブリックな(パラメータを持たない)コンストラクタがなければ困ります。
ジェネリック・クラスでこういった制約(constraints)を記述するには、C#ではwhereキーワード、VBでは「Of T」の後にAsキーワードを使います。
以下に、記述可能な制約のパターンの一覧を実際のコードで示します(このコードはコンパイル可能です)。
|
||
| 記述可能な制約のパターンの一覧 |
なおここでは説明は割愛しますが、1つの型パラメータに対して複数の制約を指定可能です。
| INDEX | ||
| [特集] | ||
| C#&VBジェネリック超入門(前編) | ||
| ジェネリック・クラスで変わるC#とVBのコレクション | ||
| 1.従来のコレクションの代表:ArrayListクラス | ||
| 2.ジェネリックを使った新しいコレクション:Listジェネリック・クラス | ||
| 3.ジェネリック・クラスの記述方法 | ||
| 4.Hashtableクラスを置き換えるDictionaryジェネリック・クラス | ||
| C#&VBジェネリック超入門(後編) | ||
| ジェネリックなメソッドやデリゲートがもたらす新スタイル | ||
| 1.ジェネリック・メソッド − ArrayクラスのIndexOfメソッド | ||
| 2.ジェネリック・デリゲート − Action<T>デリゲート | ||
| 3.Action<T>デリゲートを使用するList<T>クラスのForEachメソッド | ||
| 4.Comparison<T>デリゲートを使用するList<T>クラスのSortメソッド | ||
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
は.NET開発者中心に生まれ変わりました
スポンサーからのお知らせ
.NET開発者中心コーナー
- - PR -
イベントカレンダー
- - PR -


