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

ref-возврат

ref-возврат указывает на место, которое живёт дольше вызова - например элемент массива. Нельзя вернуть ref на локальную переменную или на stackalloc: после выхода из метода кадр стека исчезает.

Синтаксис

static ref int Item(int[] data) => ref data[0];

Пример

Давайте прочитать первый элемент через ref:

using System; class Program { static ref int Item(int[] data) => ref data[0]; static void Main() { int[] data = { 1, 2, 3 }; ref int slot = ref Item(data); int res = slot; Console.WriteLine(res); } }

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

1

Пример

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

using System; class Program { static ref int Item(int[] data) => ref data[0]; static void Main() { int[] data = { 1, 2, 3 }; Item(data) = 9; Console.WriteLine(data[0]); } }

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

9

Пример

Давайте проверить, что остальные элементы не тронуты:

using System; class Program { static ref int Item(int[] data) => ref data[0]; static void Main() { int[] data = { 1, 2, 3 }; Item(data) = 9; Console.WriteLine(data[1]); } }

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

2

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

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