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

Модификатор in

Параметр in - это ссылка только для чтения: метод не должен менять переданное значение. Для больших структур это экономит копирование, в отличие от передачи по значению. При вызове для переменной ключевое слово in можно не писать - компилятор подставит его сам.

Синтаксис

void Метод(in тип имя) Метод(переменная);

Пример

Давайте прочитаем число через in и вернём сумму с единицей:

using System; class Program { static int AddOne(in int num) { return num + 1; } static void Main() { int src = 10; Console.WriteLine(AddOne(src)); Console.WriteLine(src); } }

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

11 10

Пример

Давайте явно укажем in в вызове метода:

using System; class Program { static int Read(in int num) { return num; } static void Main() { int src = 12; Console.WriteLine(Read(in src)); } }

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

12

Пример

Давайте сравним две структуры через in:

using System; struct Point { public int X; public int Y; } class Program { static int Sum(in Point p) { return p.X + p.Y; } static void Main() { var p = new Point { X = 1, Y = 2 }; Console.WriteLine(Sum(p)); } }

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

3

Пример

Давайте найдем большую из двух величин, не копируя их лишний раз:

using System; class Program { static int Max(in int left, in int right) { return left >= right ? left : right; } static void Main() { int a = 3; int b = 5; Console.WriteLine(Max(a, b)); } }

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

5

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

  • модификатор ref,
    который разрешает менять аргумент
  • модификатор out,
    который записывает значение в аргумент
  • модификатор scoped,
    который ограничивает срок жизни ссылки
  • ключевое слово const,
    которое задаёт неизменяемую константу
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить