2010-04-22 10 views

Odpowiedz

16

to się nazywa Dictionary w C# . Używając generyków, możesz indeksować według dowolnego typu. Podobnie jak:

Dictionary<Person, string> dictionary = new Dictionary<Person, string>(); 
Person myPerson = new Person(); 
dictionary[myPerson] = "Some String"; 
... 
string someString = dictionary[myPerson]; 
Console.WriteLine(someString); 

To oczywiście drukuje "Some String" na konsoli.

Jest to przykład elastyczności słownika. Możesz to zrobić również z indeksem, tak jak prosiłeś.

+0

Yeap, spójrz na 'System.Collections' http://msdn.microsoft.com/en-us/library/system.collections.aspx – xandercoded

+2

@xandercoded, prawdopodobnie chcesz' System.Collections.Generic'. 'System.Collections' jest nietypową formą z .net 1. – Kobi

+0

Dziękuję ........: D –

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

ty ... Nice ... –

+1

To co miałem na myśli, przepraszam, to się nie pojawiło całkowicie za pierwszym razem. –

6

Tablice nie działają tak w C#, ale można dodać właściwość indeksatora do dowolnej klasy:

class MyClass 
{ 
    public string this[string key] 
    { 
     get { return GetValue(key); } 
     set { SetValue(key, value); } 
    } 
} 

Następnie można napisać rodzaj sprawozdania pytasz przeciwko temu:

MyClass c = new MyClass(); 
c["Name"] = "Bob"; 

W ten sposób zaimplementowano oparty na łańcuchach indeksowany dostęp do Dictionary<TKey, TValue>, NameValueCollection i podobnych klas. Możesz również zaimplementować wiele indeksatorów, na przykład jeden dla indeksu i jeden dla nazwy, po prostu dodaj inną właściwość jak powyżej z innym typem parametru.

Kilka wbudowanych klas ramowe mają już te indeksujących, w tym:

  • SortedList<TKey, TValue>
  • Dictionary<TKey, TValue>
  • SortedDictionary<TKey, TValue>
  • NameValueCollection
  • Lookup<TKey, TValue> (w System.Linq)

... i więcej. Wszystkie są zaprojektowane do nieco innych celów, więc będziesz chciał przeczytać każdą z nich i sprawdzić, która z nich jest odpowiednia do twoich wymagań.

+0

Dzięki, świetna odpowiedź dla laters ....: D –