Где инициализируется массив, если мы не передаем размер массива явно? - PullRequest
2 голосов
/ 20 июня 2020

Я новичок в программировании. Изучая структуру данных Array, я узнал, что мы должны инициализировать массив размером, создавая его. Но я также видел фрагмент кода на одном из сайтов, который я использую для обучения программированию. Код выглядит следующим образом:

int[] ar = Array.ConvertAll(Console.ReadLine().Split(' '), arTemp => Convert.ToInt32(arTemp))

Я предполагаю, что код должен прочитать ввод с консоли (которая является строкой) и разбить его на подстроки, а затем преобразовать в целочисленный массив и сохранить в 'ar' .

У меня вопрос, чтобы в этой строке не было ошибок. Но перед их использованием размер массива не упоминается. Как так? где в этом случае инициализируется размер этого массива?

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Из MSDN:

Array.ConvertAll(): преобразовывает массив одного типа в массив другого типа.

где в этом случае инициализируется размер этого массива?

В функции Array.ConvertAll() stati c массив размеров основан на вашем входном массиве.

В вашем случае входной массив Console.ReadLine().Split(' '). Split(' ') возвращает массив слов, разделенных пробелами. Размер этого массива присваивается выходу Array.ConvertAll() функции

int[] ar = Array.ConvertAll(Console.ReadLine().Split(' '), arTemp => Convert.ToInt32(arTemp))
    //+      +++++++++++++   ++++++++++++++++++++++++                   ++++++
    //|             |                     |                                |
    //|             |                     |                                + Integer convertor
    //|             |                     |
    //|             |                     +   Input array with it's size
    //|             |
    //|             + Converting input array to array of type int
    //|
    //+ Output integer array
0 голосов
/ 20 июня 2020

int ar - ссылка на массив. Размер массива определяется во время выполнения. Array.ConvertAll (...) возвращает массив, фактический объект. Этот новый созданный массив связан с переменной ar.

...