Можете ли вы сделать
array['Name'];
В С#
Вместо
array[0];
Я знаю, что вы можете сделать это на PHP, но есть ли равный для С#, хотя im думаю, что он вряд ли вероятен: (
Можете ли вы сделать
array['Name'];
В С#
Вместо
array[0];
Я знаю, что вы можете сделать это на PHP, но есть ли равный для С#, хотя im думаю, что он вряд ли вероятен: (
он назвал Dictionary
в С#. Используя дженерики, вы можете фактически индексировать любой тип. Например:
Dictionary<Person, string> dictionary = new Dictionary<Person, string>();
Person myPerson = new Person();
dictionary[myPerson] = "Some String";
...
string someString = dictionary[myPerson];
Console.WriteLine(someString);
Это, очевидно, выводит на консоль "Some String".
Это пример гибкости словаря. Вы можете сделать это со строкой в качестве индекса, как вы просили.
Массивы не работают так, как в С#, но вы можете добавить свойство indexer в любой класс:
class MyClass
{
public string this[string key]
{
get { return GetValue(key); }
set { SetValue(key, value); }
}
}
Затем вы можете написать тип заявлений, которые вы просите:
MyClass c = new MyClass();
c["Name"] = "Bob";
Вот как осуществляется индексированный доступ на основе строк к Dictionary<TKey, TValue>
, NameValueCollection
и аналогичным классам. Вы также можете реализовать несколько индексов, например, один для индекса и один для имени, вы просто добавляете другое свойство, как указано выше, с другим типом параметра.
В число встроенных классов классов уже есть эти индексы, в том числе:
SortedList<TKey, TValue>
Dictionary<TKey, TValue>
SortedDictionary<TKey, TValue>
NameValueCollection
Lookup<TKey, TValue>
(в System.Linq
)... и многое другое. Все они предназначены для немного разных целей, поэтому вы хотите прочитать каждый и посмотреть, какой из них подходит для вашего требования.
Dictionary<string, whatyouwanttostorehere> myDic =
new Dictionary<string, whatyouwanttostorehere>();
myDic.Add("Name", instanceOfWhatIWantToStore);
myDic["Name"];