2012-05-05 16 views
11

Digamos que tengo variables enteras xey, y quiero una matriz poblada con los valores x hasta y. ¿Hay una buena manera de hacer esto en línea, usando C#?Crear una matriz poblada con un rango de valores x hasta y

sé que puedo lograr esto usando un método de extensión:

public static int[] ExpandToArray(this int x, int y) 
{ 
    var arr = int[y - x + 1]; 
    for (int i = x; i <= y; i++) 
    { 
     arr[i-x] = i; 
    } 
    return arr; 
} 

Y luego usarlo para escribir:

x.ExpandToArray(y); 

¿Hay una manera integrada (sin crear un método de extensión) en .NET para escribir algo como x.ExpandToArray(y)?

+1

¿Por qué utilizar una lista cuando se fija y se conoce el número de elementos? – harold

+0

@harold buen punto ... – McGarnagle

+0

@harold aunque después de volver a escribirlo, mirar el revoltijo de variables me da dolor de cabeza. – McGarnagle

Respuesta

25
int[] numbers = Enumerable.Range(x, y - x + 1).ToArray(); 

El parámetro n. ° 1 es el valor de inicio. El parámetro # 2 es recuento.

+0

¡Agradable! Gracias. Estaba seguro de que algo como esto tenía que existir. – McGarnagle

+0

Si se cuenta el parámetro 2, entonces no debería ser 'y - x + 1'. Si desea valores de 4 a 4, entonces el recuento debe ser 1, no cero. –

+0

@Sahuagin Gracias por eso, tienes razón. Fijo. – SimpleVar

Cuestiones relacionadas