プロが教えるわが家の防犯対策術!

C#についての質問です。

現在、ArrayListを用いた情報管理リストのプログラムを作成しています。
そのプログラムにソートを行う機能と、検索機能をつけたいのですが、そこで質問です。
ArrayList内の要素を、「特定のフィールド(例えば氏名であったり、年齢であったりするのですが…)を基準として昇順または降順にソートする」という処理、またあるフィールドのみを基準に検索を行うという処理を行う際、ArrayListを二次元配列のように使用することが出来たら便利だな、と思ったのですが、そのようなことは可能でしょうか?

いろいろと試したり、独自に調べてはみたのですが、いまいちわからず、質問させていただきました。

お分かりになられる方がいらっしゃいましたら、ご教授いただければと思います。
よろしくお願いいたします。

A 回答 (1件)

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;
    }
  }
}
といった具合の実装で ・・・
    • good
    • 0
この回答へのお礼

まだクラスやメソッドについて勉強をし始めたばかりなのでインデクサについて詳しく理解しておらず、こういうときに使えばいいのだな、ということを思いつきませんでした。
ご丁寧に、コード例までありがとうございます*
アドバイスを参考にしながら、挑戦してみようと思います。
本当にありがとうございました!

お礼日時:2008/11/01 12:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!