Korzystanie Enumerable.Range(0, 10).ToArray()
jest bardzo zwięzły, ale jeśli chcesz stworzyć bardzo duży wachlarz metoda ToArray
rozszerzenie będzie musiał zbierać numery do bufora, które będą musiały zostać przesunięte wielokrotnie. Przy każdej realokacji zawartość bufora jest kopiowana do nowego większego bufora. .NET używa strategii, w której rozmiar bufora jest podwojony przy każdej realokacji (a bufor początkowy ma cztery pozycje).
Więc jeśli chcesz uniknąć wielu realokacje bufora trzeba utworzyć tablicę z góry:
int[] aa = new int[10];
for (var i = 0; i < aa.Length; i += 1)
aa[i] = i;
Jest to najbardziej skuteczny sposób inicjowania tablicy.
Jeśli jednak potrzebujesz tablicy o wartości 100 000 000 kolejnych liczb, powinieneś spojrzeć na projekt, w którym nie musisz przechowywać wszystkich liczb w tablicy, aby uniknąć wpływu wymogu pamięci. IEnumerable<int>
jest bardzo przydatny do tego celu, ponieważ nie trzeba przydzielać całej sekwencji, ale można ją wygenerować podczas iteracji, i to jest dokładnie to, co robi Enumerable.Range
. Zatem unikanie szeregu kolejnych liczb w pierwszej kolejności może być nawet lepsze niż myślenie o tym, jak je utworzyć.
Możliwa duplikat [Jak utworzyć tablicę z sekwencji liczb całkowitych w C#?] (Http://stackoverflow.com/questions/4588787/how-to-create-array -z-sekwencją-liczb całkowitych-w-c) –