Як я можу визначити розмір масиву (довжина / кількість елементів) у C #?
Як я можу визначити розмір масиву (довжина / кількість елементів) у C #?
Відповіді:
Якщо це одновимірний масив a
,
a.Length
дасть кількість елементів a
.
If b
- прямокутний багатовимірний масив (наприклад, int[,] b = new int[3, 5];
)
b.Rank
дасть кількість розмірів (2) та
b.GetLength(dimensionIndex)
отримає довжину будь-якого заданого виміру (індексація розмірів на основі 0 - b.GetLength(0)
це 3 і b.GetLength(1)
дорівнює 5).
Для отримання додаткової інформації див. Документацію до System.Array .
Як зазначає @Lucero у коментарях, існує концепція "зубчастого масиву", який насправді є не що інше, як одновимірний масив (як правило, одновимірних) масивів.
Наприклад, можна мати таке:
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};
Зверніть увагу, що 3 члени c
всіх мають різну довжину. У цьому випадку, як і раніше c.Length
буде вказувати число елементів c
, (3) і c[0].Length
, c[1].Length
і c[2].Length
буде 3, 2 і 7, відповідно.
int[][]
) ;-)
[,]
і [][]
, здається, не є зрозумілою для всіх початківців .NET, тому, можливо, все-таки варто зауважити, що [][]
це не багатовимірний масив у розумінні ваших відповідей.
b.GetLength[0] is 3 and b.GetLength[1] is 5
повинно бути b.GetLength(0) and b.GetLength(1)
.
Ви можете переглянути документацію до Array, щоб знайти відповідь на це питання.
У цьому конкретному випадку вам, мабуть, потрібна довжина :
int sizeOfArray = array.Length;
Але оскільки це настільки основне запитання, і, без сумніву, у вас є набагато більше подібних, а не просто сказати вам відповідь, я краще скажу вам, як знайти відповідь самостійно.
Студія Visual Intellisense
Коли ви вводите ім'я змінної та натискаєте .
клавішу, воно відображає список усіх методів, властивостей, подій тощо, доступних для цього об'єкта. Коли ви виділяєте учасника, він дає вам короткий опис того, що він робить.
Натисніть F1
Якщо ви знайдете метод або властивість, які могли б зробити те, що ви хочете, але ви не впевнені, ви можете навести на нього курсор і натиснути F1, щоб отримати допомогу. Тут ви отримаєте набагато детальніший опис, а також посилання на відповідну інформацію.
Пошук
Пошукові терміни size of array in C#
містять безліч посилань, які дають відповідь на ваше запитання та багато іншого. Однією з найважливіших навичок, яку повинен засвоїти програміст, є пошук інформації. Часто швидше знайти відповідь самостійно, особливо якщо те саме питання задавали раніше.
Використовуйте підручник
Якщо ви тільки починаєте вивчати C #, вам буде легше дотримуватися навчальних посібників. Я можу порекомендувати підручники з C # з MSDN. Якщо вам потрібна книга, я рекомендую Essential C # .
Переповнення стека
Якщо ви не можете самостійно знайти відповідь, будь ласка, опублікуйте питання на Stack Overflow. Але ми вдячні, якщо ви продемонструєте, що спочатку доклали зусиль, щоб знайти відповідь самі.
для 1-мірного масиву
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
для багатовимірного масиву
int length = listItems.Rank;
Отримати розмір 1 розмірність
int length = listItems.GetLength(0);
Rank
Властивість не повертає кількість елементів, вона повертає кількість вимірювань.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Для одновимірного масиву ви використовуєте Length
властивість:
int size = theArray.Length;
Для багатовимірних масивів Length
властивість повертає загальну кількість елементів у масиві. Ви можете використовувати GetLength
метод, щоб отримати розмір одного з вимірів:
int size0 = theArray.GetLength(0);
це виглядає так: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
тоді, коли ви використовуєте цей масив:
name[i]=new type[size_of_sec.Dim]
або Ви можете оголосити щось на зразок матриці
type[ , ] name=new type [size1,size2]
Дотепер упущено те, що мене раптом роздратувало:
Як дізнатися кількість елементів усередині масиву? Є чи .Length
одно .Count
зі списку?
Відповідь така: кількість предметів типу X, які були поміщені в масив типу X, створений разом з new X[number]
вами, ви повинні носити з собою !
Напр. за допомогою лічильника: int countItemsInArray = 0
і countItemsInArray++
для кожного призначення вашого масиву.
(У щойно створеному масиві new X[number]
є весь простір для number
елементів (посилань) типу X, вже виділених, ви можете призначити будь-якому місці всередині як своє перше призначення, наприклад (якщо number
= 100 та ім'я змінної = a
) a[50] = new X();
.
Я не знаю, чи вказує C # початкове значення кожного місця всередині масиву при створенні, якщо це не так, або початкове значення, з яким ви не можете порівняти (оскільки це може бути значення, яке ви самі ввели в масив), ви доведеться відстежувати, які місця всередині масиву ви вже призначили, якщо ви не призначаєте послідовно, починаючи з 0
(в цьому випадку всі місця, менші, ніж countItemsInArray
було б призначено).)
У вашому запитанні розмір масиву (довжина / кількість елементів) залежно від того , означає / означає "альтернатива" або "розділити на", останній все-таки повинен бути охоплений ("кількість елементів", яку я щойно дав як " кількість предметів "та інші, .Length
що відповідає значенню number
в моєму коді вище):
С # має sizeof
оператора ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Це безпечно використовувати для вбудованих типів (таких як int) (і працює лише з типами (не змінними)). Таким чином, розмір масиву b
типу int
в байтах буде b.Length * sizeof(int)
.
(Через те, що весь простір масиву вже виділено під час створення, як уже згадувалося вище, і sizeof
працює лише над типами, жоден код, як sizeof(variable)/sizeof(type)
би не працював, або не давав би кількість елементів без відстеження.)