C# · Avançado · Inglês · Técnico
NotNullWhen
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.