Модификатор out
Параметр out обязан получить значение
до выхода из метода - компилятор это проверяет.
В вызове перед аргументом пишут out.
Переменную можно объявить заранее или прямо
в вызове через out var.
Синтаксис
void Метод(out тип имя)
Метод(out переменная);
Пример
Давайте запишем ноль в out-аргумент из метода:
using System;
class Program
{
static void SetZero(out int num)
{
num = 0;
}
static void Main()
{
int val;
SetZero(out val);
Console.WriteLine(val);
}
}
Результат выполнения кода:
0
Пример
Давайте вернём из метода две величины через
out:
using System;
class Program
{
static void SplitTen(out int half, out int rest)
{
half = 5;
rest = 5;
}
static void Main()
{
SplitTen(out int a, out int b);
Console.WriteLine($"{a} {b}");
}
}
Результат выполнения кода:
5 5
Пример
Давайте разберём строку "12345" через
TryParse:
using System;
class Program
{
static void Main()
{
bool ok = int.TryParse("12345", out int res);
Console.WriteLine(ok);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
12345
Пример
Давайте используем out в методе
Deconstruct для пользовательского типа:
using System;
class Pair
{
public int Left { get; }
public int Right { get; }
public Pair(int left, int right)
{
Left = left;
Right = right;
}
public void Deconstruct(out int left, out int right)
{
left = Left;
right = Right;
}
}
class Program
{
static void Main()
{
var pair = new Pair(1, 2);
pair.Deconstruct(out int x, out int y);
Console.WriteLine($"{x} {y}");
}
}
Результат выполнения кода:
1 2
Смотрите также
-
объявление в out,
которое объявляет переменную в вызове -
модификатор
ref,
который передаёт переменную по ссылке -
отбрасывание,
которое игнорируетout-значение -
деконструкция,
которая используетoutпри разборе