2012-03-25 5 views
8

Me pregunto si al índice de una matriz se le puede asignar un nombre en C# en lugar del valor de índice predeterminado. Lo que básicamente busco es el equivalente C# del siguiente código PHP:¿Los índices de matriz pueden nombrarse en C#?

$array = array(
    "foo" => "some foo value", 
    "bar" => "some bar value", 
); 

Cheers.

+0

usted es realmente querer un hash. – seand

Respuesta

26

PHP combina el concepto de matrices y el concepto de diccionarios (también conocido como tablas hash, mapas hash, matrices asociativas) en un solo array type.

En .NET y en la mayoría de los entornos de programación, las matrices siempre se indexan numéricamente. Para los índices nombrados, utilice un dictionary lugar:

var dict = new Dictionary<string, string> { 
    { "foo", "some foo value" }, 
    { "bar", "some bar value" } 
}; 

A diferencia de matrices asociativas de PHP, .NET en los diccionarios no se ordenan. Si necesita un diccionario ordenado (pero probablemente no lo haga), .NET proporciona un sorted dictionary type.

+0

Cool gracias, aceptaré la respuesta cuando me lo permita. – diggersworld

1

Mire Hashtable en C#. Esta es la estructura de datos que hace lo que quiere en C#.

0

Puede usar Dictionary<string, FooValue> o un tipo similar o tipo de colección o, si debe adherirse a la matriz, defina Enum con sus etiquetas.

2

En una matriz, no. Sin embargo, existe la muy útil clase Dictionary, que es una colección de objetos KeyValuePair. Es similar a una matriz en que es una colección iterable de objetos con claves, pero más general en que la clave puede ser de cualquier tipo.

Ejemplo:

Dictionary<string, int> HeightInInches = new Dictionary<string, int>(); 
HeightInInches.Add("Joe", 72); 
HeightInInches.Add("Elaine", 60); 
HeightInInches.Add("Michael", 59); 

foreach(KeyValuePair<string, int> person in HeightInInces) 
{ 
    Console.WriteLine(person.Key + " is " + person.Value + " inches tall."); 
} 

MSDN Documentation for Dictionary<TKey, TValue>

Cuestiones relacionadas