屬性 FilePatternMatch.Stem 先前已註解為可為 Null,因為它從中取得其值的 PatternTestResult.Stem 屬性是可為 Null 的。 雖然如果結果不成功,則 可以 PatternTestResult 確實為 null, FilePatternMatch 但 never 是,因為它只有在成功時 PatternTestResult 才會建構。
為了準確反映可 Null 性, [MemberNotNullWhen()] 屬性會套用至 PatternTestResult.Stem 屬性,以告訴編譯器如果成功,它不會是 Null。 此外,stem傳遞至建構函式的FilePatternMatch引數不再可為 null,如果傳入 nullArgumentNullException,則會擲回 astem。
推出的版本
.NET 10
先前的行為
過去,FilePatternMatch 建構子接受 null 作為 stem 參數,而在編譯時間或執行時間都沒有任何警告或錯誤。
// Allowed in previous versions.
var match = new FilePatternMatch("path/to/file.txt", null);
屬性 FilePatternMatch.Stem 也被註解為可為空值。
新行為
從 .NET 10 開始,將 OR 可能為 Null 值傳遞 null 至 stem 建構函式中的 FilePatternMatch 引數會產生編譯時間警告。 如果傳入 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。
如果您在取用 FilePatternMatch.Stem 屬性時套用可 Null 警告抑制,您可以移除這些抑制。