次の方法で共有


FilePatternMatch.Stem が null 非許容に変更されました

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プロパティに注釈が付けられたのは、IsSuccessfultrueされた場合に値が null にならないことを示すようになりました。

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

破壊的変更の種類

この変更は ソースの互換性 に影響を与える可能性があり、 動作の変更です。

変更の理由

以前の null 許容注釈は不正確であり、null引数のstem値は予期せず、適切に保護されていませんでした。 この変更は、API の予期される動作を反映し、予期しない動作を防ぐ一方で、使用に関する設計時のガイダンスも生成します。

stem引数に null 値が渡された可能性がある場合は、使用状況を確認し、呼び出しサイトを更新して、stemnullとして patsed にできないことを確認します。

FilePatternMatch.Stem プロパティを使用するときに null 許容の警告抑制を適用した場合は、それらの抑制を削除できます。

影響を受ける API