Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1010 of 1492 menu
◀ ▶

ref-поле

ref-поле живёт только внутри ref struct. Через него можно менять исходную переменную на стеке. Не возвращайте ref struct с ref-полем на локальную переменную метода - кадр уничтожится.

Синтаксис

ref struct Box { public ref int Value; public Box(ref int value) { Value = ref value; } }

Пример

Давайте изменить x через Box:

using System; ref struct Box { public ref int Value; public Box(ref int value) { Value = ref value; } } class Program { static void Main() { int x = 1; Box box = new Box(ref x); box.Value = 9; Console.WriteLine(x); } }

Результат выполнения кода:

9

Пример

Давайте прочитать через ref-поле:

using System; ref struct Box { public ref int Value; public Box(ref int value) { Value = ref value; } } class Program { static void Main() { int x = 12345; Box box = new Box(ref x); int res = box.Value; Console.WriteLine(res); } }

Результат выполнения кода:

12345

Пример

Давайте проверить связь после второго присваивания:

using System; ref struct Box { public ref int Value; public Box(ref int value) { Value = ref value; } } class Program { static void Main() { int x = 1; Box box = new Box(ref x); box.Value = 2; Console.WriteLine(box.Value); } }

Результат выполнения кода:

2

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить