0

我正在尝试创建一个类,您可以在其中访问其中的集合并使用字符串索引获取项目,(我希望这是有道理的),基本上我想知道这被称为什么或如何做到这一点?

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

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

希望有人能对此有所了解。

谢谢你。

4

5 回答 5

2

我想你正在寻找一个indexer

索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器带有参数。

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

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

您可以使用 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");

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

于 2012-05-20T18:35:01.300 回答
0

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

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

于 2012-05-20T18:36:51.673 回答