2010-04-22 15 views

Respuesta

16

se llama Dictionary en C# . Usando genéricos puedes indexar por cualquier tipo. De la misma manera:

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

Esto obviamente imprime, "Some String" a la consola.

Este es un ejemplo de la flexibilidad del diccionario. También puede hacerlo con una cadena como índice, como lo pidió.

+0

Yeap, eche un vistazo a 'System.Collections' http://msdn.microsoft.com/en-us/library/system.collections.aspx – xandercoded

+2

@exandercoded, es probable que desee' System.Collections.Generic'. 'System.Collections' es la forma no genérica de .net 1. – Kobi

+0

Gracias ........: D –

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

ty ... Nice .... –

+1

eso es lo que quise decir lo siento, no apareció completamente la primera vez. –

6

matrices no funcionan así en C#, pero puede agregar una propiedad de indizador a cualquier clase:

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

entonces usted puede escribir el tipo de declaraciones puede pedir en contra de esta:

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

Así es como se implementan el acceso indexado basado en cadenas a Dictionary<TKey, TValue>, NameValueCollection y clases similares. También puede implementar varios indexadores, por ejemplo, uno para el índice y otro para el nombre; simplemente agrega otra propiedad como la anterior con un tipo de parámetro diferente.

Varias clases del framework incorporadas ya tienen estos controladores paso a paso, incluyendo:

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

... y más. Estos están diseñados con propósitos ligeramente diferentes, por lo que querrá leer cada uno y ver cuál es el más apropiado para sus necesidades.

+0

Gracias, impresionante respuesta para laters ....: D –

Cuestiones relacionadas