понедельник, 3 января 2022 г.

Возвращаемые ссылочные значения

 

Возвращаемые ссылочные значения — это значения, которые метод возвращает вызывающему объекту по ссылке. 

Это значит, что вызывающий объект может изменять значение, возвращаемое методом, и это изменение будет отражаться в состоянии объекта в вызывающем методе.

Возвращаемое ссылочное значение определяется с помощью ключевого слова ref:

  • В сигнатуре метода. Например, следующая сигнатура указывает, что метод GetCurrentPrice возвращает значение Decimal по ссылке.
C#
public ref decimal GetCurrentPrice()
  • Между токеном return и переменной, возвращенной в инструкции return в методе. Пример:
C#
return ref DecimalArray[0];

Чтобы вызывающий объект имел возможность изменять состояние объекта, возвращаемое ссылочное значение должно храниться в переменной, которая явно определена как ссылочная локальная переменная.

Ниже приведен более полный пример возвращаемого ссылочного значения, в котором показаны сигнатура и тело метода.

C#
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.

Комментариев нет:

Отправить комментарий

Паттерн 'Репозиторий' в ASP.NET

  Последнее обновление: 1.11.2015         Одним из наиболее часто используемых паттернов при работе с данными является паттерн 'Репозито...