Я наткнулся на неожиданное поведение в C#. Может ли массив неявно изменить свой размер?C#

Место общения программистов C#
Ответить
Anonymous
 Я наткнулся на неожиданное поведение в C#. Может ли массив неявно изменить свой размер?

Сообщение Anonymous »

Я новичок в программировании и только начал изучать C#, поэтому просто базовые упражнения. Я пытался просто заполнить массив случайными значениями и получить наибольшее число и количество раз, которое оно повторяется.
Я использую .NET 8.0, C# 12.

Код: Выделить всё

using static System.Random;

uint[] numberList = new uint[8];
WriteLine(numberList.Length);
/*
for (uint i = 0; i < numberList.Length;i++) {
numberList[i] = (uint)new Random().Next(0,9);
}
*/
numberList = [1,1,1,2,3,8,8,7,10,10,11];
WriteLine(numberList.Length);
uint[] biggerNum = [0,0];

for (uint i = 0; i < numberList.Length; i++){
if (numberList[i] > biggerNum[0]) {
biggerNum[0] = numberList[i];
}
WriteLine("Value of i: " + i);
WriteLine("Value in the array: " + numberList[i]);
}

for (uint i = 0; i < numberList.Length; i++) {
if (numberList[i] == biggerNum[0]) biggerNum[1]++;
}

WriteLine(format:"The number: {0} \nRepeated: {1} times.",
arg0:biggerNum[0],
arg1:biggerNum[1]);
Во время экспериментов я объявил массив размером 10. Но после того, как я заполнил его 11 значениями, его размер просто изменился.
Я ожидал получить ошибку компиляции, но это сработало. Потом я подумал: "Может быть, компилятор просто распознал, что я использовал 11 значений, и изменил их размер при компиляции?"
Но нет, запустив код, я увидел, что на самом деле он был объявлен с размером 10 и позже

Код: Выделить всё

numberList = [1,1,1,2,3,8,8,7,10,10,11];
его размер только что был изменен до 11. Я пробовал использовать несколько значений, начиная с 8, 5, а затем назначая больше.
Я что-то упускаю? Я пытался использовать Gemini, чтобы узнать, следует ли изменить размер, но он продолжал говорить, что изменить размер массива невозможно, чего я и ожидал. Не нашел этого конкретно в документации.
Я знаю, что должен объявить как uint[] NumberList = [1,1,1,2,3,8,8,7,10,10,11];< /code> но это ведет себя так, как будто я скрываю массив, хотя я просто присваиваю значение (я знаю, это глупый способ).

Подробнее здесь: https://stackoverflow.com/questions/787 ... ge-its-siz
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»