- - PR -
タイプセーフなArrayListの作り方
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-04-06 12:56
こんにちは。LEDです。
タイプセーフなArrayListの作り方について教えて下さい。 以下のようにCarという車を表すクラスを作成しました。
このクラスに対するコレクションクラスとしてCarsという名前のクラスを作成したいと思っています。CarsはArrayListで持っているようなメソッドを持たせたいと思っています。 方法はいくつかあると思うのですが、どのような方法があって、それぞれどのような特徴があるのか教えていただけますか? できれば、コードの例があれば助かります。 よろしくお願いいたします。 #C++のテンプレート(CArray)のようなものはC#ではないんですかね? | ||||
|
投稿日時: 2003-04-06 20:16
karajanです。
私は独自の型のコレクションを作成する場合は、 System.Collections.CollectionBase を使用してます。 これで必要な部分を実装してあげるのが手っ取り早いのではないでしょうか。 --MSDNより-- 実装時の注意: この基本クラスは、厳密に型指定されたカスタム コレクションを簡単に作成できるように提供されています。実装する場合は、独自のクラスを作成するのではなく、この基本クラスを拡張してください。 | ||||
|
投稿日時: 2003-04-07 14:52
ありがとうございます。
このようなクラスがあるとは知りませんでした。 お世話になりました。 | ||||
|
投稿日時: 2003-04-08 00:36
用途によってはDataTableとかが使えるかも知れません。
こんな感じ。 DataTable dt = new DataTable(); // int型のみを入れる dt.Columns.Add("MyColumn", typeof(int)); DataRow dr = dt.NewRow(); dr[0] = 10; // int型なのでOK dt.Rows.Add(dr); dr = dt.NewRow(); dr[0] = "ABC"; // string型なので例外発生 dt.Rows.Add(dr); 中に入っている型は同一であることは保証されますが、 チェックは実行時なので、C++のテンプレートみたいな、 コンパイル時チェックを希望する場合は向きません。 その場合はやはり、karajanさんの回答にあるように、 独自に作るしかないです。 早くGenericsが欲しい・・・ |
1