Прямая инициализация массива с постоянной величиной

Панировочные сухари можно отключить в настройках IDE. Я не думаю, что вы можете сделать что-нибудь с другими панелями инструментов. Запрос приветствуется .

48
задан Community 23 May 2017 в 12:10
поделиться

4 ответа

Это не избыточно.

предположим исключение выдается во время Вашего цикла инициализации. Если CLR не очистил память сначала, Вы могли бы быть в состоянии "видеть" исходную неинициализированную память, которая является очень плохой идеей, особенно с точки зрения безопасности. Вот почему CLR гарантирует, что любая недавно выделенная память вытерта к 0 комбинациям двоичных разрядов.

тот же аргумент содержит для полей в объекте, между прочим.

я предполагаю в обоих случаях, что CLR мог проверить, что Вы не собираетесь делать массив видимым в другом месте перед заканчивающейся инициализацией, но это - сложная проверка для предотвращения довольно простой "очистки эта область памяти".

33
ответ дан Jon Skeet 26 November 2019 в 18:53
поделиться

Если бы Вы вложились в Массивы, которые рассматривают несколько вредными , то Ваш вопрос был бы спорен, как Вы запишете:

var myArray = new List<int>(Enumerable.Repeat(-1, 100));
10
ответ дан Ðаn 26 November 2019 в 18:53
поделиться

Я высоко сомневаюсь, что JIT оптимизирует далеко набор по умолчанию для этого сценария. Так как причина, то, что это было бы заметным различием. Рассмотрите следующий немного измененный сценарий.

obj.myArray = new int[100];
for (int i=0; i<myArray.Length; i++) { obj.myArray[i] = -1; }

для цикла совершенно возможно бросить. По крайней мере, для JIT, вероятно, не возможно доказать, что это не делает. Если бы это бросило, и CLR не принимал значение по умолчанию, инициализируют память, результат был бы заметен, если бы у Вас все еще была ссылка на obj.

3
ответ дан JaredPar 26 November 2019 в 18:53
поделиться

Подобно ответу Дэна, но без необходимости использования коллекций:

int[] myArray = Enumerable.Repeat(-1, 100).ToArray();
32
ответ дан 26 November 2019 в 18:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: