Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Модификатор ref
Модификатор ref
Теперь рассмотрим, использование в C# модификатора ref (от reference – ссылочный). Ссылочные параметры нужны тогда, когда требуется позволить методу изменять данные, объявленные в контексте вызова (например, в функциях сортировки или обмена данными). Обратите внимание на различие между выходными и ссылочными параметрами.
• Выходные параметры не требуется инициализировать перед передачей их методу. Причина в том, что сам метод должен присвоить значения выходным параметрам.
• Ссылочные параметры необходимо инициализировать до того, как они будут переданы методу. Причина в том, что передается ссылка на существующую переменную. Если не присвоить переменной начальное значение, это будет означать использование неинициализированной переменной.
Давайте продемонстрируем использование ключевого слова ref с помощью метода, в котором осуществляется обмен значениями двух строк.
// Ссылочные параметры.
public static void SwapStrings(ref string s1, ref string s2) {
string tempStr = s1;
s1 = s2;
s2 = tempStr;
}
Этот метод можно вызвать так.
static void Main(string[] args) {
string s = "Первая строка";
string s2 = "Вторая строка";
Console.WriteLine("До: {0}, {1} ", s, s2);
SwapStrings(ref s, ref s2);
Console.WriteLine("После: {0}, {1} ", s, s2);
}
Здесь вызывающая сторона присваивает начальное значение локальным строковым данным (s и s2). По завершении вызова SwapStrings() строка s содержит значение "Вторая строка", a s2 – значение "Первая строка".