Массив неизвестной длины в C #
Я только начал изучать С# и во введении к массивам они показали, как установить переменную как массив, но кажется, что нужно указать длину массива при назначении, так что, если я не знаю, длина массива?
10 ответов
Массиям должна быть назначена длина. Чтобы разрешить любое количество элементов, используйте класс List .
Используйте List<> для создания «массива» неизвестной длины.
Используйте List<>.ToArray() для возврата реального массива, а не List .
Вы можете создать массив с размером, установленным в переменной, т.е.
Однако этот размер не может измениться позже, если вы решите, что вам нужно 100 слов. Если вам нужно, чтобы размер был действительно динамичным, вам нужно использовать другую структуру данных. Попробуйте List .
Немного справочной информации:
Как сказано, если вы хотите иметь динамический набор вещей, используйте List<T> . Внутри List также использует массив для хранения. Этот массив имеет фиксированный размер, как и любой другой массив. Как только массив объявлен как имеющий размер, он не изменяется. Когда вы добавляете элемент в List , он добавляется в массив. Изначально List начинается с массива, который, как мне кажется, имеет длину 16. Когда вы пытаетесь добавить 17-й элемент в List , происходит то, что выделяется новый массив, который (я думаю) дважды размер старого, так что 32 элемента. Затем содержимое старого массива копируется в новый массив. Поэтому, хотя a List может показаться динамичным для внешнего наблюдателя, он также должен соблюдать правила.
И, как вы, возможно, догадались, копирование и распределение массивов не является бесплатным, поэтому нужно стремиться к тому, чтобы иметь как можно меньше из них, и сделать это, которое вы можете указать (в конструкторе List ), начальный размер массива, который в идеальном сценарии достаточно велик, чтобы держать все, что вы хотите. Однако это микро-оптимизация и маловероятно, что это будет иметь для вас значение, но всегда приятно знать, что вы делаете на самом деле.
Вы также можете посмотреть в словарях, если ваши данные уникальны. Это даст вам два столбца для работы.
Имя пользователя, Итоговый счет
он дает вам множество встроенных инструментов для поиска и обновления только значения.
Array of an unknown length in C#
I’ve just started learning C# and in the introduction to arrays they showed how to establish a variable as an array but is seems that one must specify the length of the array at assignment, so what if I don’t know the length of the array?
11 Answers 11
Arrays must be assigned a length. To allow for any number of elements, use the List class.
Use List<> to build up an ‘array’ of unknown length.
Use List<>.ToArray() to return a real array, and not a List .
![]()
A little background information:
As said, if you want to have a dynamic collection of things, use a List<T> . Internally, a List uses an array for storage too. That array has a fixed size just like any other array. Once an array is declared as having a size, it doesn’t change. When you add an item to a List , it’s added to the array. Initially, the List starts out with an array that I believe has a length of 16. When you try to add the 17th item to the List , what happens is that a new array is allocated, that’s (I think) twice the size of the old one, so 32 items. Then the content of the old array is copied into the new array. So while a List may appear dynamic to the outside observer, internally it has to comply to the rules as well.
And as you might have guessed, the copying and allocation of the arrays isn’t free so one should aim to have as few of those as possible and to do that you can specify (in the constructor of List ) an initial size of the array, which in a perfect scenario is just big enough to hold everything you want. However, this is micro-optimization and it’s unlikely it will ever matter to you, but it’s always nice to know what you’re actually doing.
Динамические массивы в C++ — урок 8
В пятом уроке мы разобрали понятие массива. При объявлении, мы задавали массиву определенный постоянный размер. Возможно, кто-то из читателей пробовал делать так:
Но, как уже было сказано — при объявлении статического массива, его размером должна являться числовая константа, а не переменная. В большинстве случаев, целесообразно выделять определенное количество памяти для массива, значение которого изначально неизвестно.
Например, необходимо создать динамический массив из N элементов, где значение N задается пользователем. В предыдущем уроке мы учились выделять память для переменных, используя указатели. Выделение памяти для динамического массива имеет аналогичный принцип.
Создание динамического массива
Синтаксис выделения памяти для массива имеет вид указатель = new тип[размер] . В качестве размера массива может выступать любое целое положительное значение.
Массивы в Си
Массив в Си — это набор элементов одного типа, обратиться к которым можно по индексу. Элементы массивов в C расположены друг за другом в памяти компьютера.
Простой пример создания и заполнения массива в C:

В примере объявляем массив, содержащий элементы типа int:
здесь имя массива nArr, количество элементов массива равно трём, тип элементов массива int.
Массив — это набор элементов. К каждому элементу массива можно обратиться по его номеру. Номер принято называть индексом. Нумерация элементов массива идёт с нуля. Присвоим значение первому элементу массива, а первый элемент имеет индекс ноль:
Присвоим значение второму элементу массива, а второй элемент имеет индекс один:
Присвоим значение третьему элементу массива, а третий элемент имеет индекс два:
При выводе на экран элементов массива мы получаем их значения. Вот так:
Чтоб получить элемент массива, надо указать имя массива и индекс элемента:
это первый элемент массива, ведь у первого элемета индекс ноль.
Присвоим значение третьего элемента массива переменной int a:
индекс третьего элемента массива равен двум, так как отсчёт индексов ведут с нуля.
Теперь общее правило объявления массивов в Си: при объявлении массива нужно указать его имя, тип элементов, количество элементов. Количество элементов есть натуральное число, т.е. целое положительное. Ноль не может быть количеством элементов. Нельзя задавать переменное количество элементов массива. Вот примеры объявлений массивов в C:
Ошибкой будет объявить массив с переменным количеством элементов:
Но можно задавать количество элементов постоянной величиной: или непосредственным целым положительным числом 1, 2, 3… или константой:
Далее инициализация массивов в C.
При объявлении массива в Си его сразу можно инициализировать:
Можно не указывать количество элементов массива в квадратных скобках, если инициализируются все элементы массива:
количество элементов будет в этом случае определено автоматически.
Можно определить лишь часть элементов массива при его объявлении:
в этом примере первые два элемента массива инициализированы, а третий не определен.
Пример массива символов:
При объявлении массива нельзя указывать количество элементов переменной. Но можно использовать переменные при обращении к элементам массивов:
Это используется при работе с циклами. Пример:
В примере в первом цикле заполняем массив элементами типа int, а во втором цикле выводим эти элементы на экран.