我正在尝试创建一个类,您可以在其中访问其中的集合并使用字符串索引获取项目,(我希望这是有道理的),基本上我想知道这被称为什么或如何做到这一点?
这是我的意思的一个例子;
string blah = SomeClass.Items["Item1"].ToString();
希望有人能对此有所了解。
谢谢你。
我正在尝试创建一个类,您可以在其中访问其中的集合并使用字符串索引获取项目,(我希望这是有道理的),基本上我想知道这被称为什么或如何做到这一点?
这是我的意思的一个例子;
string blah = SomeClass.Items["Item1"].ToString();
希望有人能对此有所了解。
谢谢你。
我想你正在寻找一个indexer。
索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器带有参数。
在您的情况下,您想使用字符串进行索引。像这样的东西:
public MyItem this[string index]
{
get { return ... }
}
Items
从语法中删除层可能会更好。这将导致您的代码读取如下:
string blah = SomeClass["Item1"].ToString();
你的意思是一个字符串索引器。
索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器带有参数。
您可以使用 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");
我想关键是你可以用这种模式包装几乎任何集合,以满足几乎任何需要。
正如人们所说,索引属性是一种选择。教程在这里
http://msdn.microsoft.com/en-us/library/aa288464(v=vs.71).aspx