Поделиться через


FilePatternMatch.Stem изменен на непустую

Свойство FilePatternMatch.Stem ранее было аннотировано как значение NULL, так как PatternTestResult.Stem свойство, которое он получает из него, является nullable. PatternTestResult Хотя результат действительно может быть null, если результат не является успешным, никогда не потому, FilePatternMatch что он создается только в случае PatternTestResult успешного выполнения.

Чтобы точно отразить значение NULL, [MemberNotNullWhen()] атрибут применяется к PatternTestResult.Stem свойству, чтобы сообщить компилятору, что он не будет null, если он успешно выполнен. Кроме того, аргумент, переданный в stem конструктор, FilePatternMatch больше не является null, и ArgumentNullException будет возникать, если значение NULL stem передается.

Представленная версия

.NET 10

Предыдущее поведение

FilePatternMatch Ранее конструктор принял null для stem параметра без предупреждений времени компиляции или ошибок среды выполнения.

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

Свойство FilePatternMatch.Stem также было аннотировано как допустимое значение NULL.

Новое поведение

Начиная с .NET 10, передавая аргумент или null возможное значение stem NULL в аргумент конструктора FilePatternMatch , выдает предупреждение во время компиляции. И, если null передается, создается среда выполнения ArgumentNullException .

Теперь FilePatternMatch.Stem свойство аннотировано, чтобы указать, что значение не будет null, если IsSuccessful имеет значение true.

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

Тип разрушающего изменения

Это изменение может повлиять на совместимость источников и является изменением поведения.

Причина изменения

Предыдущие заметки о nullability были неточными, и null значение аргумента stem было неожиданным, но не должным образом защищены. Это изменение отражает ожидаемое поведение API и защиты от непредсказуемого поведения, а также создание руководства по времени разработки вокруг использования.

Если для аргумента передано потенциально значение NULL, проверьте его использование и обновите место вызова, чтобы убедиться, что stem не может быть передано как null.

Если при использовании FilePatternMatch.Stem свойства применены предупреждения о допустимости NULL, их можно удалить.

Затронутые API