Как вам должно быть уже известно, значение возвращается из метода вызывающей части программы с помощью оператораreturn.Но метод может одновременно возвратить лишь
Использование модификатора параметра ref
Модификатор параметраrefпринудительно организует вызов по ссылке, а не по значению. Этот модификатор указывается как при объявлении, так и при вызове метода. Для начала рассмотрим простой пример. В приведенной ниже программе создается методSqr , возвращающий вместо своего аргумента квадрат его целочисленного значения. Обратите особое внимание на применение и местоположение модификатораref.
// Использовать модификатор ref для передачи значения обычного типа по ссылке.
using System;
class RefTest {
// Этот метод изменяет свой аргумент. Обратите // внимание на применение модификатора ref. public void Sqr(ref int i) {
i = i * i;
}
}
class RefDemo {
static void Main {
RefTest ob = new RefTest;
int a = 10;
Console.WriteLine("а до вызрва: " + a); ob.Sqr(ref a); // обратите внимание на применение модификатора ref Console.WriteLine("а после вызова: " + а);
}
}
Как видите, модификаторrefуказывается перед объявлением параметра в самом методе и перед аргументом при вызове метода. Ниже приведен результат выполнения данной программы, который подтверждает, что значение аргументаадействительно было изменено с помощью методаSqr .
а до вызова: 10 а после вызова: 100
Теперь, используя модификаторref,можно написать метод, переставляющий местами значения двух своих аргументов простого типа. В качестве примера ниже приведена программа, в которой метод Swap выполняет перестановку значений двух своих целочисленных аргументов, когда он вызывается.
// Поменять местами два значения.
using System;
class ValueSwap {
// Этот метод меняет местами свои аргументы, public void Swap(ref int a, ref int b) { int t; t = a; a = b; b = t;
}
}
class ValueSwapDemo { static void Main {
ValueSwap ob = new ValueSwap;
int x=10, у = 20;
Console.WriteLine("x и у до вызова: " + х + " " + у); ob.Swap (ref х, ref у);
Console.WriteLine("х и у после вызова: " + х + " " + у);
}
}
Вот к какому результату приводит выполнение этой программы.
х и у до вызова: 10 20 х и у после вызова: 20 10