aktualnie indeks o wartości List<int>
to Int32, czy mogę przejść do Int64?mogę zbudować długą listę <int> tak, że indeks jest długi?
Więc mogę użyć czegoś takiego jak mylist [1000000000000].
aktualnie indeks o wartości List<int>
to Int32, czy mogę przejść do Int64?mogę zbudować długą listę <int> tak, że indeks jest długi?
Więc mogę użyć czegoś takiego jak mylist [1000000000000].
Nie, nie możesz.
Nie byłoby to przydatne, gdyby było dozwolone. CLR ma ograniczenie maksymalnej wielkości obiektu przy 2 GB. W związku z tym nie jest możliwe zbudowanie tablicy, w której przydatny byłby indeks long
.
Nie można zmienić interfejsu listy ramowej <>, który określa typ argumentu indeksu jako int
. Ale możesz można utworzyć własny typ, który ma indeks long
.
Jak zauważył JaredPar, nie można utworzyć tablicy wystarczająco dużej, aby wymagać 64-bitowego indeksu. Jeśli chcesz utworzyć listę, w której można przechowywać tak wiele elementów, będziesz musiał użyć jakiejś struktury drzewa lub tablic tablic lub czegoś takiego. I będziesz potrzebować dużo pamięci!
Możesz mieć listę, która będzie zawierać długie wartości lub liczby większe niż 2 147 483 647.
List<long> list = new List<long>();
list.Add(3000000000) will work.
Wierzę, że Mono używa 64-bitowych int dla indeksów tablicowych. Nie jestem pewien, czy oznacza to, że ich implementacja List <> jest inna. –
Lista może używać innej strategii do przechowywania jej elementów. Na przykład może użyć jakiejś struktury drzewa. – phoog