Доступ к целому массиву из функции

#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--;
        }
    }
}