可以使用C#中的数组['Name']访问的数组

时间:2010-04-22 04:25:28

标签: c#

你能做到吗

array['Name'];

在C#中

而不是:

array[0];

我知道你可以用PHP做到这一点,但是对于C#来说是有平等的,尽管我认为highley不太可能:(

3 个答案:

答案 0 :(得分:18)

在C#中称为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”。

这是字典灵活性的一个例子。您也可以使用字符串作为索引,就像您要求的那样。

答案 1 :(得分:6)

数组在C#中的工作方式不同,但您可以为任何类添加索引器属性:

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

......等等。这些都是为了略微不同的目的而设计的,所以你需要阅读每一个,看看哪个适合你的要求。

答案 2 :(得分:2)

Dictionary<string, whatyouwanttostorehere> myDic =
                            new Dictionary<string, whatyouwanttostorehere>();
myDic.Add("Name", instanceOfWhatIWantToStore);   
myDic["Name"];