Partilhar via


FilePatternMatch.Stem alterado para não anulável

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

Para refletir com precisão a anulabilidade, o [MemberNotNullWhen()] atributo é aplicado à PatternTestResult.Stem propriedade para dizer 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 um ArgumentNullException será lançado se um nulo stem for passado.

Versão introduzida

.NET 10

Comportamento anterior

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

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

O FilePatternMatch.Stem imóvel também foi anotado como anulável.

Novo comportamento

A partir do .NET 10, passar um null valor ou possivelmente nulo para o stem argumento no FilePatternMatch construtor produz um aviso em tempo de compilação. E, se null for passada, é lançado um tempo ArgumentNullException de execução.

A FilePatternMatch.Stem propriedade agora é 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 da fonte e é uma mudança comportamental.

Motivo da mudança

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

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

Se você aplicou supressões de aviso de anulabilidade ao consumir a FilePatternMatch.Stem propriedade, poderá removê-las.

APIs afetadas