我试图创建一个类,你可以在其中访问一个集合,并使用字符串索引获取一个项目(我希望这是有道理的),基本上我想知道这个叫什么或者怎么做?
这是我的意思的一个例子;
string blah = SomeClass.Items["Item1"].ToString();
希望有人能够理解这一点。
谢谢。
答案 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