В чем разница между объявлением массивов переменных в глобальной и локальной области (внутри метода), когда они находятс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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • В чем разница между объявлением массивов переменных в глобальной и локальной области (внутри метода), когда они находятс
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Разница между объявлением переменных до или в цикле?
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Почему exec () не создает объекты в локальной/глобальной области?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Почему exec () не создает объекты в локальной/глобальной области?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Почему exec () не создает объекты в локальной/глобальной области?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

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