Hatena::Grouptenmon

waka memo

 | 

2008-09-11 Thursday

【C#】ListのFindを使って

17:56

public class TestClass
{
  // 変数
  private intValue = 0;
  private stringValue = string.Empty;

  // コンストラクタ
  public TestClass()
  {
  }
  public TestClass(int intValue, string stringValue)
  {
    this.intValue = intValue;
    this.stringValue = stringValue;
  }

  // プロパティ
  public int IntValue
  {
    get { return this.intValue; }
    set { this.intValue = value; }
  }
  public string StringValue
  {
    get { return this.stringValue; }
    set { this.stringValue= value; }
  }
}

class ListFind
{
  public void ListFindTest()
  {
    // TestClassのList作成
    List<TestClass> testClassList = new List<TestClass>();

    // Listに値の追加
    testClassList.Add(new TestClass(1, "test"));
    testClassList.Add(new TestClass(2, "test2"));
    testClassList.Add(new TestClass(3, "test3"));

    // 検索
    TestClass testClass = this.FindTestClassValue(testClassList, "test2");
  }

  private TestClass FindTestClassValue(List<TestClass> testClassList, string name)
  {
    // 検索内容詳細
    return testClassList.Find(delegate(TestClass testClass) { return testClass.StringValue == name; });
  }
}

クラスオブジェクトの List の中から、要求する変数を持ったクラスを探し出して取得する方法。

例えば、TestClass というクラスが変数として、String型の StringValue とInt型の IntValue の2つを持っているとする。

その TestClass リストの中から、StringValue が "test2" に該当する TestClass を取得するのが上の例。

Indexで取得してもいいんだけど、Index って List の中身がいつ誰に変えられるかわからんので不正確。

(上の例ではそんなことはないんだけど)

確実性のことを考えて、Find を利用して取得できるようにしてみたつもり。

aqlaql2008/09/18 21:22C#のクラスってこんなふうに書くのね。勉強になった。

wakawaka2008/09/18 22:36お、それは良かった。

トラックバック - http://tenmon.g.hatena.ne.jp/waka0529/20080911
 |