Возвращаемые ссылочные значения — это значения, которые метод возвращает вызывающему объекту по ссылке.
Это значит, что вызывающий объект может изменять значение, возвращаемое методом, и это изменение будет отражаться в состоянии объекта в вызывающем методе.
Возвращаемое ссылочное значение определяется с помощью ключевого слова ref:
- В сигнатуре метода. Например, следующая сигнатура указывает, что метод
GetCurrentPriceвозвращает значение Decimal по ссылке.
public ref decimal GetCurrentPrice()
- Между токеном
returnи переменной, возвращенной в инструкцииreturnв методе. Пример:
return ref DecimalArray[0];
Чтобы вызывающий объект имел возможность изменять состояние объекта, возвращаемое ссылочное значение должно храниться в переменной, которая явно определена как ссылочная локальная переменная.
Ниже приведен более полный пример возвращаемого ссылочного значения, в котором показаны сигнатура и тело метода.
public static ref int Find(int[,] matrix, Func<int, bool> predicate)
{
for (int i = 0; i < matrix.GetLength(0); i++)
for (int j = 0; j < matrix.GetLength(1); j++)
if (predicate(matrix[i, j]))
return ref matrix[i, j];
throw new InvalidOperationException("Not found");
}
Вызываемый метод может также объявить возвращаемое значение ref readonly, чтобы вернуть значение по ссылке, и запретить вызывающему коду изменять возвращаемое значение. Вызывающий метод может обойтись без копирования возвращаемого значения, сохраняя его в локальной переменной ref readonly.
Комментариев нет:
Отправить комментарий