Ref int вопрос в C # - PullRequest
       3

Ref int вопрос в C #

5 голосов
/ 10 августа 2011

Проще говоря, я использую цикл while для повторения метода, и каждый раз, когда метод запускается, int "i" увеличивается на 1. Хотя у меня возникают проблемы с вызовом метода NumberUp. ошибка вывода ниже.

Основной метод:

while (true)
{
    NumberUp(0);
}

Метод NumberUp:

public static void NumberUp(ref int i)
{
    i++;
    System.Console.WriteLine(i);
}

Я получаю следующую ошибку:

Наилучшее совпадение перегруженного метода для 'ConsoleApplication2.Program.NumberUp (ref int)' имеет недопустимые аргументы

Ответы [ 5 ]

16 голосов
/ 10 августа 2011

Чтобы вызвать метод, который принимает параметр ref, необходимо передать переменную и использовать ключевое слово ref:

int x = 0;
NumberUp(ref x);
//x is now 1

. Передается ссылка напеременная x, позволяющая методу NumberUp добавить новое значение в переменную.

2 голосов
/ 10 августа 2011

Ссылка используется для передачи переменной в качестве ссылки.Но вы не передаете переменную, вы передаете значение.

 int number = 0;
 while (true)
 {
      NumberUp(ref number );
 }

Нужно добиться цели.

1 голос
/ 10 августа 2011

ref

NumberUp(ref number );
1 голос
/ 10 августа 2011

Вы должны передать 0 как ссылку на переменную, содержащую 0, например:

int i = 0;
NumberUp(ref i);

Для получения дополнительной информации о ключевом слове ref см. Здесь.

1 голос
/ 10 августа 2011

Параметр ref должен быть передан ref и ему нужна переменная:

int i = 0;
while (true)
{
    NumberUp(ref i);
}
...