ref readonly
ref readonly позволяет читать
элемент массива без копии. Присваивание
через такую ссылку не компилируется -
в коде примеров его нет. Сочетается с
ref-возвратом.
Синтаксис
static ref readonly int First(int[] data) => ref data[0];
ref readonly int slot = ref First(data);
Пример
Давайте прочитать значение через ref readonly:
using System;
class Program
{
static ref readonly int First(int[] data) => ref data[0];
static void Main()
{
int[] data = { 1, 2, 3 };
ref readonly int slot = ref First(data);
int res = slot;
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Пример
Давайте сравнить с исходным массивом:
using System;
class Program
{
static ref readonly int First(int[] data) => ref data[0];
static void Main()
{
int[] data = { 1, 2, 3 };
ref readonly int slot = ref First(data);
bool res = slot == data[0];
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте изменить массив напрямую и снова прочитать:
using System;
class Program
{
static ref readonly int First(int[] data) => ref data[0];
static void Main()
{
int[] data = { 1, 2, 3 };
data[0] = 9;
ref readonly int slot = ref First(data);
Console.WriteLine(slot);
}
}
Результат выполнения кода:
9
Смотрите также
-
ref-возврат,
изменяемая ссылка -
ref-поле,
поле-ссылка вref struct -
ref struct,
ограничения типа -
fixed,
закрепление массива