FilePatternMatch.Stemプロパティは、値を取得するPatternTestResult.Stemプロパティが null 許容であるため、以前は null 許容として注釈が付けられていた。 結果が成功しなかった場合、 PatternTestResult は実際には null になることがありますが、 FilePatternMatch は、 PatternTestResult が成功したときにのみ構築されるためではありません。
null 値の許容を正確に反映するために、 [MemberNotNullWhen()] 属性が PatternTestResult.Stem プロパティに適用され、成功した場合は null にならないことをコンパイラに通知します。 さらに、stem コンストラクターに渡されるFilePatternMatch引数は null 許容ではなくなり、null ArgumentNullExceptionが渡されると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 引数にFilePatternMatchまたは null 値を渡すと、コンパイル時の警告が生成されます。 また、 null が渡されると、ランタイム ArgumentNullException がスローされます。
FilePatternMatch.Stemプロパティに注釈が付けられたのは、IsSuccessfulがtrueされた場合に値が null にならないことを示すようになりました。
// Generates compile-time warning.
var match = new FilePatternMatch("path/to/file.txt", null);
破壊的変更の種類
この変更は ソースの互換性 に影響を与える可能性があり、 動作の変更です。
変更の理由
以前の null 許容注釈は不正確であり、null引数のstem値は予期せず、適切に保護されていませんでした。 この変更は、API の予期される動作を反映し、予期しない動作を防ぐ一方で、使用に関する設計時のガイダンスも生成します。
推奨されるアクション
stem引数に null 値が渡された可能性がある場合は、使用状況を確認し、呼び出しサイトを更新して、stemがnullとして patsed にできないことを確認します。
FilePatternMatch.Stem プロパティを使用するときに null 許容の警告抑制を適用した場合は、それらの抑制を削除できます。
影響を受ける API
.NET