Compartilhar via


FilePatternMatch.Stem alterado para não anulável

A FilePatternMatch.Stem propriedade foi anotada anteriormente como anulável porque a PatternTestResult.Stem propriedade da qual ela obtém seu valor é anulável. Embora o PatternTestResult valor possa ser nulo se o resultado não for bem-sucedido, nunca FilePatternMatch será porque ele só será construído quando PatternTestResult for bem-sucedido.

Para refletir com precisão a nulidade, o [MemberNotNullWhen()] atributo é aplicado à PatternTestResult.Stem propriedade para informar ao compilador que ele não será nulo se for bem-sucedido. Além disso, o stem argumento passado para o FilePatternMatch construtor não é mais anulável e será ArgumentNullException gerado se um valor nulo stem for passado.

Versão introduzida

.NET 10

Comportamento anterior

Anteriormente, o FilePatternMatch construtor aceitava null o stem parâmetro sem avisos ou erros de tempo de compilação ou de runtime.

// Allowed in previous versions.
var match = new FilePatternMatch("path/to/file.txt", null);

A FilePatternMatch.Stem propriedade também foi anotada como sendo anulável.

Novo comportamento

A partir do .NET 10, passar um null valor ou possivelmente nulo para o stem argumento no FilePatternMatch construtor gera um aviso de tempo de compilação. E, se null for passado para dentro, um runtime ArgumentNullException será lançado.

A FilePatternMatch.Stem propriedade agora está anotada para indicar que o valor não será nulo se IsSuccessful for true.

// Generates compile-time warning.
var match = new FilePatternMatch("path/to/file.txt", null);

Tipo de mudança disruptiva

Essa alteração pode afetar a compatibilidade do código-fonte e é uma alteração comportamental.

Motivo da alteração

As anotações de nulidade anteriores eram imprecisas e um null valor para o stem argumento era inesperado, mas não protegido corretamente. Essa alteração reflete o comportamento esperado da API e protege contra comportamentos imprevisíveis, ao mesmo tempo em que produz diretrizes de tempo de design em torno do uso.

Se um valor possivelmente nulo foi passado para o argumento, examine o stem uso e atualize o site de chamada para garantir stem que não pode ser paTssed como null.

Se você aplicou supressões de aviso de nulidade ao consumir a FilePatternMatch.Stem propriedade, poderá remover essas supressões.

APIs afetadas