В чем разница между объявлением массивов переменных в глобальной и локальной области (внутри метода), когда они находятсC#

Место общения программистов C#
Ответить
Anonymous
 В чем разница между объявлением массивов переменных в глобальной и локальной области (внутри метода), когда они находятс

Сообщение Anonymous »

Здесь новичок. В чем разница между объявлением массива в глобальной области и использованием его в методе, который находится в том же классе, что и массив, и объявлением массива как в глобальной области, так и в методе? Первый способ не работает, а второй работает, и я не могу найти ответа, почему.

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

string[] pettingZoo =
{
"alpacas", "capybaras", "chickens", "ducks", "emus", "geese",
"goats", "iguanas", "kangaroos", "lemurs", "llamas", "macaws",
"ostriches", "pigs", "ponies", "rabbits", "sheep", "tortoises",
};

RandomizeAnimals(pettingZoo);

void RandomizeAnimals(string[] animals
{
Random random = new();
int randomNumber;
for (int i = 0; i < animals.Length; i++)
{
randomNumber = random.Next(0, animals.Length);
if (animals[randomNumber] == string.Empty)
{
for (int j = 0; j < animals.Length; j++)
{
if (animals[j] != string.Empty)
{
pettingZoo[i] = animals[j];
animals[j] = string.Empty;
break;
}
}
}
else
{
pettingZoo[i] = animals[randomNumber];
animals[randomNumber] = string.Empty;
}
Console.WriteLine(pettingZoo[i]);
}
}

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

RandomizeAnimals(pettingZoo);

void RandomizeAnimals(string[] animals)
{

string[] pettingZoo = new string[animals.Length];
Random random = new();
int randomNumber;
for (int i = 0; i < animals.Length; i++)
{
randomNumber = random.Next(0, animals.Length);
if (animals[randomNumber] == string.Empty)
{
for (int j = 0; j < animals.Length; j++)
{
if (animals[j] != string.Empty)
{
pettingZoo[i] = animals[j];
animals[j] = string.Empty;
break;
}
}
}
else
{
pettingZoo[i] = animals[randomNumber];
animals[randomNumber] = string.Empty;
}
Console.WriteLine(pettingZoo[i]);
}
}

Я попробовал первый способ, и хотя первые итерации, казалось, работали (pettingZoo присваивалось правильное значение на основе значения в животных, а животным присваивалась пустая строка), но
по мере выполнения он будет повторять значения, которые уже были пустыми в массиве животных. А второй, просто объявив массив внутри метода (даже если он был объявлен в глобальной области видимости, в том же классе, с тем же именем, что и массив внутри метода), это просто сработало, и я не могу объяснить, как

Подробнее здесь: https://stackoverflow.com/questions/787 ... pe-and-loc
Ответить

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

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

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

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

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