0

その中のコレクションにアクセスし、文字列インデックスを使用してアイテムを取得できるクラスを作成しようとしています (これが理にかなっていることを願っています)。

これが私の言いたいことの例です。

string blah = SomeClass.Items["Item1"].ToString();

うまくいけば、誰かがこれを理解できるでしょう。

ありがとうございました。

4

5 に答える 5

2

インデクサーをお探しだと思います。

インデクサーを使用すると、クラスまたは構造体のインスタンスに配列と同じようにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを受け取ることを除いて、プロパティに似ています。

あなたの場合、文字列を使用してインデックスを作成します。このようなもの:

public MyItem this[string index]
{
    get { return ... }
}

Items構文からレイヤーを削除したほうがよい場合があります。その結果、コードは次のようになります。

string blah = SomeClass["Item1"].ToString();
于 2012-05-20T18:34:26.330 に答える
1

あなたは文字列インデクサを意味します。

インデクサーを使用すると、クラスまたは構造体のインスタンスに配列と同じようにインデックスを付けることができます。インデクサーは、アクセサーがパラメーターを受け取ることを除いて、プロパティに似ています。

于 2012-05-20T18:34:40.590 に答える
0

を使用しDictionary<string, string>ます。

于 2012-05-20T18:34:00.227 に答える
0

リストのラッパーを使用して、「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");

重要なのは、このパターンでほぼすべてのコレクションをラップして、ほぼすべてのニーズに合わせることができるということです。

于 2012-05-20T18:35:01.300 に答える
0

人々が言っ​​ているように、インデックス付きのプロパティは1つのオプションです。ここのチュートリアル

http://msdn.microsoft.com/en-us/library/aa288464(v=vs.71).aspx

于 2012-05-20T18:36:51.673 に答える