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 を利用して取得できるようにしてみたつもり。
aql2008/09/18 21:22C#のクラスってこんなふうに書くのね。勉強になった。
waka2008/09/18 22:36お、それは良かった。