Панировочные сухари можно отключить в настройках IDE. Я не думаю, что вы можете сделать что-нибудь с другими панелями инструментов. Запрос приветствуется .
Это не избыточно.
предположим исключение выдается во время Вашего цикла инициализации. Если CLR не очистил память сначала, Вы могли бы быть в состоянии "видеть" исходную неинициализированную память, которая является очень плохой идеей, особенно с точки зрения безопасности. Вот почему CLR гарантирует, что любая недавно выделенная память вытерта к 0 комбинациям двоичных разрядов.
тот же аргумент содержит для полей в объекте, между прочим.
я предполагаю в обоих случаях, что CLR мог проверить, что Вы не собираетесь делать массив видимым в другом месте перед заканчивающейся инициализацией, но это - сложная проверка для предотвращения довольно простой "очистки эта область памяти".
Если бы Вы вложились в Массивы, которые рассматривают несколько вредными , то Ваш вопрос был бы спорен, как Вы запишете:
var myArray = new List<int>(Enumerable.Repeat(-1, 100));
Я высоко сомневаюсь, что JIT оптимизирует далеко набор по умолчанию для этого сценария. Так как причина, то, что это было бы заметным различием. Рассмотрите следующий немного измененный сценарий.
obj.myArray = new int[100];
for (int i=0; i<myArray.Length; i++) { obj.myArray[i] = -1; }
для цикла совершенно возможно бросить. По крайней мере, для JIT, вероятно, не возможно доказать, что это не делает. Если бы это бросило, и CLR не принимал значение по умолчанию, инициализируют память, результат был бы заметен, если бы у Вас все еще была ссылка на obj.
Подобно ответу Дэна, но без необходимости использования коллекций:
int[] myArray = Enumerable.Repeat(-1, 100).ToArray();