Описание тега out
В C# ключевое слово out приводит к тому, что параметры передаются по ссылке от вызываемого объекта к вызывающему. Параметр не обязательно должен быть назначен в функции, но должен быть назначен до выхода из функции.
Ключевое слово out заставляет аргументы передаваться по ссылке. Это похоже на ключевое слово ref, за исключением того, что ref требует, чтобы переменная была инициализирована перед передачей. Чтобы использовать параметр out, как определение метода, так и вызывающий метод должны явно использовать ключевое слово out. Например:
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value = 2;
Method(out value);
// value is now 44
}
}
Хотя переменные, передаваемые как исходящие аргументы, не нуждаются в инициализации перед передачей, вызываемый метод должен присвоить значение перед возвратом метода.
Ключевые слова ref и out обрабатываются по-разному во время выполнения, но обрабатываются одинаково во время компиляции. Следовательно, методы не могут быть перегружены, если один метод принимает аргумент ref, а другой - аргумент out.