ExpertiDict

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

NotNullWhen

/nɑt nʌl wɛn/substantivo

Atributo de análise de nulabilidade que informa ao compilador que um parâmetro (como um out) não é nulo quando o método retorna true ou false, conforme configurado.

Onde usar

Aparece em métodos no estilo TryGet, como bool Achar(string k, out string? v), para que o chamador que verificou o retorno não receba aviso de nulo. É assim que Dictionary.TryGetValue e string.IsNullOrEmpty conversam com o compilador.

Em código

using System.Diagnostics.CodeAnalysis;

bool Achar(string k,
  [NotNullWhen(true)] out string? v)
{
  v = k == "a" ? "Alfa" : null;
  return v is not null;
}

Exemplos

Add NotNullWhen so the compiler knows the value isn't null.

Adicione NotNullWhen para o compilador saber que o valor não é nulo.

TryGetValue uses NotNullWhen on its out parameter.

O TryGetValue usa NotNullWhen no parâmetro out.

Cuidado

Não use para mentir ao compilador: o atributo não verifica nada, apenas descreve; se o método não cumprir a promessa, o NullReferenceException vira realidade.

Veja também

Todos os termos de C#