2012-05-19 20 views
6

¿El C# tiene ningún equivalente de la función de PHP array_key_exists?¿Hay un equivalente de C# de array_key_exists de PHP?

Por ejemplo, tengo este código PHP:

$array = array(); 
$array[5] = 4; 
$array[7] = 8; 
if (array_key_exists($array, 2)) 
    echo $array[2]; 

¿Cómo voy a convertir esto en C#?

+0

Esta es una mala pregunta - gama significa cosas diferentes en cada idioma - de AC# perspectiva de un arreglo asociativo PHP es un diccionario - en C# las matrices no tienen claves que sólo tienen un índice secuencial –

+0

donchano @web_bod of Dictionary en System.Collections.Generic namespace ?? –

+0

sí - pero él dice "tengo una' array' y quiero saber si contiene el valor de clave seleccionada" -' arrays' no tienen 'keys' donchno! –

Respuesta

6

Lo sentimos, pero los vectores dinámicos como PHP no se admiten en C#. Lo que puede hacer es crear un Dictionary<TKey, TValue>(int, int) y añadir usando .Add(int, int)

using System.Collections.Generic; 
... 
Dictionary<int, int> dict = new Dictionary<int, int>(); 
dict.Add(5, 4); 
dict.Add(7, 8); 
if (dict.ContainsKey(5)) 
{ 
    // [5, int] exists 
    int outval = dict[5]; 
    // outval now contains 4 
} 
+0

Arreglos dinámicos son compatibles; se llaman listas y se les puede hacer referencia por clave al igual que las matrices PHP. – CompanyDroneFromSector7G

1

Puede utilizar ContainsKey

var dictionary = new Dictionary<string, int>() 
{ 
    {"mac", 1000}, 
    {"windows", 500} 
}; 

// Use ContainsKey method. 
if (dictionary.ContainsKey("mac") == true) 
{ 
    Console.WriteLine(dictionary["mac"]); // <-- Is executed 
} 

// Use ContainsKey method on another string. 
if (dictionary.ContainsKey("acorn")) 
{ 
    Console.WriteLine(false); // <-- Not hit 
} 
+0

+1, aunque creo que el punto importante es que él/ella quiere un diccionario en lugar de una matriz. –

+0

sí Chris también lo hacen i – Mennan

+0

que no funciona con int [] –

4

una matriz en C# tiene un tamaño fijo, por lo que sería declarar una matriz de 8 números enteros

int[] array = new int[8]; 

A continuación, sólo tiene que comprobar la longitud

if(array.Length > 2) 
{ 
    Debug.WriteLine(array[2]); 
} 

Eso está bien para los tipos de valor, pero si usted tiene una gran variedad de tipos de referencia, por ejemplo,

Person[] array = new Person[8]; 

continuación, tendrá que comprobar NULL como en

if(array.Length > 2 && array[2] != null) 
{ 
    Debug.WriteLine(array[2].ToString()); 
} 
+3

o utilizar Dictionary

+0

Esta respuesta parece el más informativo. Pero dado que PHP probablemente tiene una idea diferente sobre qué es una matriz, Dictionary es un mejor enfoque. En conjunto, solo tiene índices, por lo tanto, tendrá tantas "claves" como el tamaño de la matriz. En Diccionario, solo tiene tantos pares clave-valor como los agrega allí. –

5

En C# Cuando se declara una nueva matriz, usted tiene que proporcionar un tamaño de asignación de memoria. Si va a crear una gran variedad de int, los valores se rellenan previamente en la creación de instancias, por lo que siempre van a existir las llaves.

int[] array = new int[10]; 
Console.WriteLine(array[0]); //outputs 0. 

Si desea una gama dinámica de tamaño, se puede utilizar un List.

List<int> array = new List<int> 
array.push(0); 

if (array.Length > 5) 
    Console.WriteLine(array[5]); 
Cuestiones relacionadas