параметр ref

Ключевое слово ref означает, что передача методу переменной происходит по ссылке.
При передаче переменной методу по ссылке, происходит реальная передача значения переменной, поэтому, значение после выполнения метода изменяется.
Переменной, передаваемой через параметр, должно быть сначала присвоено значение, т.е. переменная должна быть инициализирована.
При вызове метода, ключевое слово ref нужно указывать явно.
Метод, имеющий в параметре ключевое слово ref, не может быть перегружен.
Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • class One {
  •  public decimal val;
  •  public One(decimal arg) {
  •   val = arg;
  •  }
  •  //аргумент передается по значению
  •  public void Fun1(decimal arg) {
  •   arg*=2;
  •  }
  •  //аргумент передается по ссылке
  •  public void Fun2(ref decimal arg) {
  •   arg*=2;
  •  }
  • }
  •  
  • class Program {
  •  public static int Main() {
  •   One O = new One(10);
  •   Console.WriteLine("начальное значение поля : {0}", O.val);
  •   O.Fun1(O.val);
  •   Console.WriteLine("начальное значение поля : {0}", O.val);
  •   //при вызове метода, ключевое слово ref нужно указывать явно
  •   O.Fun2(ref O.val);
  •   Console.WriteLine("начальное значение поля : {0}", O.val);
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
начальное значение поля : 10
начальное значение поля : 10
начальное значение поля : 20