访问集合

时间:2012-05-20 18:31:22

标签: c#

我试图创建一个类,你可以在其中访问一个集合,并使用字符串索引获取一个项目(我希望这是有道理的),基本上我想知道这个叫什么或者怎么做?

这是我的意思的一个例子;

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

希望有人能够理解这一点。

谢谢。

5 个答案:

答案 0 :(得分:2)

我认为您正在寻找indexer

  

索引器允许对类或结构的实例进行索引,就像数组一样。索引器类似于属性,除了它们的访问器接受参数。

在您的情况下,您希望使用字符串进行索引。像这样:

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

您可能最好从语法中删除Items图层。这将导致您的代码读取如下:

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

答案 1 :(得分:1)

你的意思是string indexer

  

索引器允许对类或结构的实例进行索引,就像数组一样。索引器类似于属性,除了它们的访问器接受参数。

答案 2 :(得分:0)

答案 3 :(得分:0)

您可以使用List周围的包装器来获取“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");

我想重点是你可以用这种模式包装任何集合以满足几乎任何需要。

答案 4 :(得分:0)

正如人们所说,索引属性是一种选择。这里的教程

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