2009-09-13 5 views

Respuesta

16

usted puede hacer esto:

DoSomething(10, new[] {"One", "Two", "Three"}); 

proporcionados todos los objetos son del mismo tipo que no es necesario especificar el tipo en la definición de matriz

+2

perfecto! ¿Podrías explicar por qué es necesario el nuevo []? Si lo hiciera: string [] MyString = {"One", "Two", "Three"}; funciona bien? –

+1

es exactamente la forma en que funciona la sintaxis. no puedes hacer esto: var x = string [] {"One", "Two", "Three"}; pero puedes hacer esto var y = new [] {"One", "Two", "Three"}; –

+1

estos artículos son muy útiles. los inicializadores de objetos hacen que el código sea mucho más limpio http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers .aspx y para obtener más información sobre su pregunta original, vea esto http://msdn.microsoft.com/en-us/library/ms364047(VS.80).aspx#cs3spec_topic7 –

2

Prueba esto:

DoSomething(10, new string[] {"One", "Two", "Three"}); 
2

Puede construirlo al pasarlo así:

DoSomething(10, new string[] { "One", "Two", "Three"}); 
9

Si DoSomething es una función que puede modificar, puede usar la palabra clave params para pasar varios argumentos sin crear una matriz. También aceptará matrices correctamente, por lo que no es necesario "deconstruir" una matriz existente.

class x 
{ 
    public static void foo(params string[] ss) 
    { 
     foreach (string s in ss) 
     { 
      System.Console.WriteLine(s); 
     } 
    } 

    public static void Main() 
    { 
     foo("a", "b", "c"); 
     string[] s = new string[] { "d", "e", "f" }; 
     foo(s); 
    } 
} 

Salida:

 
$ ./d.exe 
a 
b 
c 
d 
e 
f 
+0

¡Esta es también una sugerencia brillante! –

Cuestiones relacionadas