その中のコレクションにアクセスし、文字列インデックスを使用してアイテムを取得できるクラスを作成しようとしています (これが理にかなっていることを願っています)。
これが私の言いたいことの例です。
string blah = SomeClass.Items["Item1"].ToString();
うまくいけば、誰かがこれを理解できるでしょう。
ありがとうございました。
その中のコレクションにアクセスし、文字列インデックスを使用してアイテムを取得できるクラスを作成しようとしています (これが理にかなっていることを願っています)。
これが私の言いたいことの例です。
string blah = SomeClass.Items["Item1"].ToString();
うまくいけば、誰かがこれを理解できるでしょう。
ありがとうございました。
インデクサーをお探しだと思います。
インデクサーを使用すると、クラスまたは構造体のインスタンスに配列と同じようにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを受け取ることを除いて、プロパティに似ています。
あなたの場合、文字列を使用してインデックスを作成します。このようなもの:
public MyItem this[string index]
{
get { return ... }
}
Items
構文からレイヤーを削除したほうがよい場合があります。その結果、コードは次のようになります。
string blah = SomeClass["Item1"].ToString();
あなたは文字列インデクサを意味します。
インデクサーを使用すると、クラスまたは構造体のインスタンスに配列と同じようにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを受け取ることを除いて、プロパティに似ています。
を使用しDictionary<string, string>
ます。
リストのラッパーを使用して、「Items」プロパティを取得できます。
public class MyClass
{
private readonly List<string> _myColl = new List<string>();
public List<string> Items
{
get { return this._myColl; }
}
}
その後、次のように使用できます。
MyClass c = new MyClass();
c.Items.Add("something");
文字列キーが必要な場合は、いつでも切り替えることができますList to Dictionary<string, string>
public class MyClass
{
private readonly Dictionary<string, string> _myColl = new Dictionary<string, string>();
public Dictionary<string, string> Items
{
get { return this._myColl; }
}
}
次に、次のように使用します。
MyClass c = new MyClass();
c.Items.Add("somekey", "somevalue");
重要なのは、このパターンでほぼすべてのコレクションをラップして、ほぼすべてのニーズに合わせることができるということです。
人々が言っているように、インデックス付きのプロパティは1つのオプションです。ここのチュートリアル
http://msdn.microsoft.com/en-us/library/aa288464(v=vs.71).aspx