#c# #arrays
#c# #массивы
Вопрос:
Я пытаюсь записать целые числа из массива в функцию, она всегда показывает «Имя ‘(array name)’ не существует в текущем контексте»
int counter = int.Parse(Console.ReadLine());
int[] nums = new int[counter];
while (counter > 0)
{
nums[counter] = counter;
counter--;
}
(в основном создается массив с длиной, выбранной пользователем, и в массив помещаются числа от 1 до counter)
после некоторого кода, который изменяет то, что находится в целых числах массива
(счетчик не изменяется)
print(counter);
функция, которую я создал
public static void print(int count);
{
*some code*
while (count > 0)
{
Console.WriteLine(nums[count]); //line with the error
count--;
}
}
Я ожидал, что он запишет целые числа в массив nums, но этого не произошло.
(кстати, мне нужно записать это внутри функции, я вызываю это позже в коде)
Комментарии:
1. Почему у вас есть поля [] и числа []? Похоже, вы немного перепутали их. Пожалуйста, опубликуйте полный код.
Ответ №1:
Ну, это означает, что ваш массив не находится в контексте функции, поэтому он не может его «видеть». Либо вы должны объявить его в функции, сделать доступным через какое-либо поле в классе, либо передать его в качестве параметра
public static void print(int[] nums, int count)
{...}
Ответ №2:
«Имя ‘(array name)’ не существует в текущем контексте»
Как следует из ошибки, ваша функция не может найти массив в контексте функции (потому что он находится вне самой функции).
Для того, чтобы найти его, у вас есть два варианта:
print(counter, nums)
public static void print(int count, int[] nums)
{...}
Или оберните все в класс:
class Program
{
static int[] nums;
static void Main(string[] args)
{
int counter = int.Parse(Console.ReadLine());
int[] nums = new int[counter];
while (counter > 0)
{
nums[counter] = counter;
counter--;
}
print(counter);
}
public static void print(int count)
{
// some code
while (count > 0)
{
Console.WriteLine(nums[count]); //line with the error
count--;
}
}
}