Jak mogę określić rozmiar tablicy (długość / liczbę elementów) w C #?
Jak mogę określić rozmiar tablicy (długość / liczbę elementów) w C #?
Odpowiedzi:
Jeśli jest to tablica jednowymiarowa a
,
a.Length
poda liczbę elementów a
.
Jeśli b
jest prostokątną tablicą wielowymiarową (na przykład int[,] b = new int[3, 5];
)
b.Rank
poda liczbę wymiarów (2) i
b.GetLength(dimensionIndex)
otrzyma długość dowolnego podanego wymiaru (indeksowanie na podstawie 0 dla wymiarów - więc b.GetLength(0)
wynosi 3 i b.GetLength(1)
wynosi 5).
Aby uzyskać więcej informacji, zobacz dokumentację System.Array .
Jak @Lucero wskazuje w komentarzach, istnieje koncepcja „tablicy postrzępionej”, która w rzeczywistości jest niczym innym jak jednowymiarową tablicą (zazwyczaj jednowymiarowych) tablic.
Na przykład, można mieć:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
Zwróć uwagę, że wszystkie 3 elementy c
mają różne długości. W tym przypadku jak poprzednio c.Length
wskazuje liczbę elementów c
(3), i c[0].Length
, c[1].Length
, a c[2].Length
wynosi 3, 2 i 7, odpowiednio.
int[][]
) ;-)
[,]
i [][]
nie wydaje się być jasne dla wszystkich początkujących użytkowników .NET, więc nadal warto zauważyć, że [][]
nie jest to wielowymiarowa tablica w sensie odpowiedzi.
b.GetLength[0] is 3 and b.GetLength[1] is 5
powinno być b.GetLength(0) and b.GetLength(1)
.
Możesz zajrzeć do dokumentacji Array, aby znaleźć odpowiedź na to pytanie.
W tym konkretnym przypadku prawdopodobnie potrzebujesz Długość :
int sizeOfArray = array.Length;
Ale ponieważ jest to takie podstawowe pytanie i bez wątpienia masz o wiele więcej takich pytań, zamiast po prostu odpowiadać, wolałbym raczej powiedzieć, jak samemu znaleźć odpowiedź.
Visual Studio Intellisense
Po wpisaniu nazwy zmiennej i naciśnięciu .
klawisza wyświetli się lista wszystkich metod, właściwości, zdarzeń itp. Dostępnych dla tego obiektu. Kiedy wyróżnisz członka, otrzymasz krótki opis tego, co robi.
Naciśnij klawisz F1
Jeśli znajdziesz metodę lub właściwość, która może zrobić to, co chcesz, ale nie masz pewności, możesz najechać na nią kursorem i nacisnąć klawisz F1, aby uzyskać pomoc. Tutaj znajdziesz znacznie bardziej szczegółowy opis oraz linki do powiązanych informacji.
Szukaj
Wyszukiwane hasła size of array in C#
zawierają wiele linków, które zawierają odpowiedź na Twoje pytanie i nie tylko. Jedną z najważniejszych umiejętności, których musi nauczyć się programista, jest znajdowanie informacji. Często szybsze jest samodzielne znalezienie odpowiedzi, zwłaszcza jeśli zadawano to samo pytanie.
Skorzystaj z samouczka
Jeśli dopiero zaczynasz uczyć się języka C #, łatwiej będzie Ci skorzystać z samouczka. Mogę polecić samouczki C # w witrynie MSDN. Jeśli chcesz książkę, polecam Essential C # .
Przepełnienie stosu
Jeśli nie jesteś w stanie samodzielnie znaleźć odpowiedzi, nie wahaj się zadać pytania na stronie Stack Overflow. Ale będziemy wdzięczni, jeśli pokażesz, że podjąłeś wysiłek, aby samemu znaleźć odpowiedź.
dla 1-wymiarowej tablicy
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
dla tablicy wielowymiarowej
int length = listItems.Rank;
Aby uzyskać rozmiar 1 wymiaru
int length = listItems.GetLength(0);
Rank
Nieruchomość nie zwraca liczbę elementów, zwraca liczbę wymiarów.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Dla tablicy jednowymiarowej używasz Length
właściwości:
int size = theArray.Length;
W przypadku tablic wielowymiarowych Length
właściwość zwraca całkowitą liczbę elementów w tablicy. Możesz skorzystać z GetLength
metody, aby uzyskać rozmiar jednego z wymiarów:
int size0 = theArray.GetLength(0);
wygląda to tak: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
wtedy jak używasz tej tablicy:
name[i]=new type[size_of_sec.Dim]
lub możesz zadeklarować coś w rodzaju macierzy
type[ , ] name=new type [size1,size2]
To, czego dotychczas brakowało, to to, co mnie nagle zirytowało:
Skąd mam wiedzieć, ile elementów znajduje się w tablicy? Czy .Length
równa .Count
się liście?
Odpowiedź brzmi: ilość elementów typu X, które zostały umieszczone w utworzonej tablicy typu X new X[number]
, musisz nieść !
Na przykład. używając licznika: int countItemsInArray = 0
i countItemsInArray++
dla każdego przypisania do twojej tablicy.
(Tablica właśnie utworzona z new X[number]
ma number
już przydzielone miejsce na elementy (referencje) typu X, możesz przypisać do dowolnego miejsca wewnątrz jako pierwsze przypisanie, na przykład (jeśli number
= 100 i nazwa zmiennej = a
) a[50] = new X();
.
Nie wiem, czy C # określa początkową wartość każdego miejsca wewnątrz tablicy przy tworzeniu, jeśli tak nie jest, czy też wartość początkową, z którą nie można porównać (ponieważ może to być wartość, którą sam umieściłeś w tablicy), musiałby również śledzić, do których miejsc w tablicy już przypisałeś, jeśli nie przypiszesz kolejno, zaczynając od 0
(w takim przypadku wszystkie miejsca mniejsze niż countItemsInArray
byłyby przypisane).)
W pytaniu rozmiar tablicy (długość / liczba elementów) w zależności od tego, czy / ma oznaczać „alternatywę”, czy „podziel przez”, musi być jeszcze uwzględniony („liczba elementów”, które właśnie podałem jako „ ilość pozycji "i innych .Length
podanych co odpowiada wartości number
w moim kodzie powyżej):
C # ma sizeof
operator ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Jest bezpieczny w użyciu dla typów wbudowanych (takich jak int) (i działa tylko na typach (nie na zmiennych)). Zatem rozmiar tablicy b
typu int
w bajtach byłby b.Length * sizeof(int)
.
(Ze względu na to, że cała przestrzeń tablicy jest już przydzielona podczas tworzenia, jak wspomniano powyżej, i sizeof
działa tylko na typach, żaden kod nie sizeof(variable)/sizeof(type)
działałby ani nie generował ilości elementów bez śledzenia.