2010-01-03 19 views

Respuesta

113

utilizar una matriz parámetro con el params modificador:

public static int AddUp(params int[] values) 
{ 
    int sum = 0; 
    foreach (int value in values) 
    { 
     sum += value; 
    } 
    return sum; 
} 

Si desea asegurarse de que hay al menos uno valor (en lugar de una matriz posiblemente vacío) entonces especificar que por separado:

public static int AddUp(int firstValue, params int[] values) 

(Set sum a firstValue a comenzar con la aplicación.)

en cuenta que también debe comprobar la referencia de matriz de nulidad de la forma habitual. Dentro del método, el parámetro es una matriz perfectamente ordinaria. El modificador de matriz de parámetros solo hace una diferencia cuando llama al método. Básicamente el compilador convierte:

int x = AddUp(4, 5, 6); 

en algo así como:

int[] tmp = new int[] { 4, 5, 6 }; 
int x = AddUp(tmp); 

Usted puede llama con una matriz perfectamente normal, aunque - por lo que este último sintaxis es válida en el código fuente también.

+0

Hermoso, gracias Jon! –

+0

En 'public static int AddUp (params int [] values)' los 'values' siempre serán de tipo' T [] '? ¿No puede ser del tipo 'params IEnumerable values' o' params List values'. Intenté usar 'params IEnumerable values' pero me dio error, que luego se resolvió usando' param IEnumerable [] values'. ¿Porque? – barnes

+1

@barnes: 'params' solo funciona para tipos de matriz (en este momento, ha habido propuestas para permitir otros tipos). Es casi seguro que * no * quiere 'parametros IEnumerable []' ya que eso sería una matriz de secuencias. –

4

C# 4.0 también admite parámetros opcionales, que podrían ser útiles en algunas otras situaciones. Vea el artículo this.

Cuestiones relacionadas