我想要做一個類,你可以訪問它的一個集合,並獲得一個項目使用字符串索引,(我希望這是有道理的),基本上我想知道這是什麼或如何做到這一點?訪問一個集合
這裏是我的意思的一個例子;
string blah = SomeClass.Items["Item1"].ToString();
希望有人可以對此有所瞭解。
謝謝。
我想要做一個類,你可以訪問它的一個集合,並獲得一個項目使用字符串索引,(我希望這是有道理的),基本上我想知道這是什麼或如何做到這一點?訪問一個集合
這裏是我的意思的一個例子;
string blah = SomeClass.Items["Item1"].ToString();
希望有人可以對此有所瞭解。
謝謝。
您的意思是一個string indexer。
索引器允許像數組一樣索引類或結構的實例。索引器類似於屬性,但它們的訪問器需要參數。
您可以在列表中使用包裝來獲取「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
我想這是有道理的,但你如何確定字符串名稱是什麼?你可以讓你的索引器做,並返回任何你想要的。 –
它可能是一個'Dictionary'。或者你可以實現你自己的收藏。索引器(方括號)被實現爲'this'屬性。請參閱http://stackoverflow.com/questions/287928/how-do-i-overload-the-square-bracket-operator-in-c –