2012-05-05 11 views
11

Diciamo che ho variabili intere xey, e voglio un array popolato con valori da x a y. C'è un bel modo per farlo in linea, usando C#?Creare una matrice popolata con un intervallo di valori da x a y

So che posso farlo con un metodo di estensione:

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; 
} 

E poi utilizzarlo per scrivere:

x.ExpandToArray(y); 

Esiste un modo built-in (senza creare un metodo di estensione) in .NET per scrivere qualcosa come x.ExpandToArray(y)?

+1

Perché utilizzare un elenco quando il numero di elementi è fisso e noto? – harold

+0

@harold buon punto ... – McGarnagle

+0

@harold anche se dopo averlo riscritto, guardando il groviglio di variabili mi dà mal di testa. – McGarnagle

risposta

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

Il parametro n. 1 è il valore iniziale. Il parametro # 2 è il conteggio.

+0

Bello! Grazie. Ero certo che qualcosa del genere doveva esistere. – McGarnagle

+0

Se param 2 è il conteggio, allora non dovrebbe essere 'y - x + 1'. Se si desidera valori da 4 a 4, il conteggio dovrebbe essere 1, non zero. –

+0

@Sahuagin Grazie per quello, hai ragione. Fisso. – SimpleVar

Problemi correlati