ExpertiDict

C# · Avançado · Inglês · Técnico

in parameter

/ɪn pəˈɹæmɪtɚ/substantivo

Modificador que passa o argumento por referência somente leitura, evitando copiar structs grandes. O método não pode atribuir ao parâmetro, e o chamador pode omitir a palavra in.

Onde usar

Aparece em código de desempenho que recebe structs maiores que cerca de 16 bytes, como matrizes e vetores. Combine com readonly struct: caso contrário o compilador faz cópias defensivas e perde o ganho.

Em código

double Det(in Mat m) => m.A * m.D;
Console.WriteLine(Det(new Mat(2, 3))); // 6

readonly struct Mat(double a, double d)
{
  public double A { get; } = a;
  public double D { get; } = d;
}

Exemplos

Pass the big struct by in to avoid the copy.

Passe a struct grande por in para evitar a cópia.

The in parameter can't be assigned inside the method.

O parâmetro in não pode receber atribuição dentro do método.

Cuidado

Não use in em tipos pequenos ou de referência: passar um int por in é mais lento que por valor.

Antônimos

ref parameter

Veja também

Todos os termos de C#