В отношении модификатораrefнеобходимо иметь в виду следующее. Аргументу, передаваемому по ссылке с помощью этого модификатора, должно быть присвоено значение
Использование модификатора параметра out
Иногда ссылочный параметр требуется использовать для получения значения из метода, а не для передачи ему значения. Допустим, что имеется метод, выполняющий некоторую функцию, например, открытие сетевого сокета и возврат кода успешного или неудачного завершения данной операции в качестве ссылочного параметра. В этом случае методу не передается никакой информации, но в то же время он должен возвратить определенную информацию. Главная трудность при этом состоит в том, что параметр типаrefдолжен быть инициализирован определенным значением до вызова метода. Следовательно, чтобы воспользоваться параметром типаref,придется задать для аргумента фиктивное значение и тем самым преодолеть данное ограничение. Правда, в C# имеется более подходящий вариант выхода из подобного затруднения — воспользоваться модификатором параметраout.
Модификатор параметраoutподобен модификаторуref,за одним исключением: он служит только для передачи значения за пределы метода. Поэтому переменной, используемой в качестве параметраout,не нужно (да и бесполезно) присваивать какое-то значение. Более того, в методе параметрoutсчитается
Ниже приведен пример применения модификатора параметраout.В этом примере программы для разделения числа с плавающей точкой на целую и дробную части используется методGetParts из классаDecompose.Обратите внимание на то, как возвращается каждая часть исходного числа.
// Использовать модификатор параметра out.
using System;
class Decompose {
/* Разделить числовое значение с плавающей точкой на целую и дробную части. */ public int GetParts(double n, out double frac) { int whole;
whole = (int) n;
frac = n - whole; // передать дробную часть числа через параметр frac return whole; // возвратить целую часть числа
}
}
class UseOut {
static void Main {