2011-08-01 9 views

Respuesta

12

No hay diferencia en este caso, pero la primera sintaxis es solo disponible al declarar una variable. Desde la sección de especificaciones de C# 4 12.6:

Los inicializadores de matriz se pueden especificar en declaraciones de campo, declaraciones de variables locales y expresiones de creación de matriz.

(el "conjunto de inicializador" es el bit entre llaves - y una expresión de creación de matriz es la forma en que se especifica new int[] o lo que sea.)

Cuando no se declara una variable local o un campo (por ejemplo, si estás pasando un argumento a un método) usted tiene que utilizar la segunda forma, o de C# 3.0 se puede utilizar una matriz implícitamente escrito:

Foo(new[] { 1, 2, 3}); 
2

No hace la diferencia. Ambos son lo mismo.

1
int[] array1; // declare array1 as an int array of any size 
array1 = new int[10]; // array1 is a 10-element array 
array1 = new int[20]; // now it's a 20-element array 

int[] array2 = new int[5] {1, 2, 3, 4, 5}; // declare array 2 as an int array of size 5 

Ambos son los mismos. Vea aquí en MSDN on initializing arrays.

1

Dado que está proporcionando el inicializador en la misma línea en la que está declarando, puede omitir el nuevo operador.

// Este es OK

int [] i32Array = {1,2,3,4,5};

// esto no es

int [] i32Array; i32Array = {1,2,3,4,5};

Si su definición y la iniciación ocurre en diferentes líneas que tendrá que hacer esto

i32Array = new int [] {1,2,3,4,5};

Así que, técnicamente hablando, es posible declarar una variable de matriz sin inicialización, pero debe utilizar el nuevo operador cuando se asigna una matriz para esta variable

1

La ambas son exactamente el mismo aspecto

este código:

int[] arr1={1,2,3,4}; 
int[] arr2= new int[]{1,2,3,4}; 

usando el reflector el tanto convierte en la siguiente:

int[] expr_07 = new int[] 
      { 
       1, 
       2, 
       3, 
       4 
      }; 
      int[] expr_19 = new int[] 
      { 
       1, 
       2, 
       3, 
       4 
      }; 
Cuestiones relacionadas