質問: c# arraylistを二次元配列のように使用したい。 c#についての質問です。 現在、arraylistを用いた情報管理リストのプログラムを作成しています。 そのプログラムにソートを行う機能と、検索機能をつけたいのですが、そこで質問です。 arraylist内の要素を、「特定のフィールド(例えば氏名であったり、年齢であったりするのですが...)を基準として昇順または降順にソートする」という処理、またあるフィールドのみを基準に検索を行うという処理を行う際、arraylistを二次元配列のように使用することが出来たら便利だな、と思ったのですが、そのようなことは可能でしょうか? いろいろと試したり、独自に調べてはみたのですが、いまいちわからず、質問させていただきました。 お分かりになられる方がいらっしゃいましたら、ご教授いただければと思います。 よろしくお願いいたします。
回答: arraylistを継承した独自のクラスを定義して[]のインデクサを定義すれば可能でしょう class person { private string name; private int age; person( string sname, int nage ) { name = sname; age = sage; } public name { get { return name; } set ( name = value; } } public age { get { return age; } set { age = value; } } } class myal : arraylist { public virtual object this[ int nindex, int ntype ] { get { object obj = this[nindex]; // namespaceは実際のnamesapceに置換してください if ( obj.gettye() == type.gettype( "namespace.person" ) ) { person p = (person)obj; switch( ntype ) { case 0: return p.name; case 1: return p.age; } } // ntypeが0または1以外 および objがperson以外の型 return null; } } } といった具合の実装で ・・・