Bagikan melalui


FilePatternMatch.Stem diubah menjadi tidak dapat diubah ke null

Properti FilePatternMatch.Stem sebelumnya diberi anotasi sebagai nullable karena properti tempat PatternTestResult.Stem nilainya dapat diubah ke null. PatternTestResult Meskipun memang bisa null jika hasilnya tidak berhasil, FilePatternMatch yang tidak pernah adalah karena hanya dibangun ketika PatternTestResult berhasil.

Untuk mencerminkan nullability secara akurat, [MemberNotNullWhen()] atribut diterapkan ke PatternTestResult.Stem properti untuk memberi tahu pengkompilasi, atribut tersebut tidak akan null jika berhasil. Selain itu, argumen yang stem diteruskan ke FilePatternMatch konstruktor tidak lagi dapat diubah ke null, dan ArgumentNullException akan dilemparkan jika null stem diteruskan.

Versi yang diperkenalkan

.NET 10

Perilaku sebelumnya

Sebelumnya, konstruktor FilePatternMatch menerima parameter nullstem tanpa peringatan atau kesalahan waktu kompilasi atau runtime.

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

Properti FilePatternMatch.Stem juga dianotasi sebagai nullable.

Perilaku baru

Mulai dari .NET 10, meneruskan null nilai atau mungkin-null ke stem argumen dalam FilePatternMatch konstruktor menghasilkan peringatan waktu kompilasi. Dan, jika null diteruskan, runtime ArgumentNullException dilemparkan.

Properti FilePatternMatch.Stem sekarang dianotasi untuk menunjukkan bahwa nilainya tidak akan null jika IsSuccessful adalah true.

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

Jenis perubahan yang memutus kompatibilitas

Perubahan ini dapat memengaruhi kompatibilitas sumber dan merupakan perubahan perilaku.

Alasan perubahan

Anotasi nullability sebelumnya tidak akurat, dan null nilai untuk stem argumen tidak terduga tetapi tidak dijaga dengan benar. Perubahan ini mencerminkan perilaku API yang diharapkan dan melindungi dari perilaku yang tidak dapat diprediksi sambil juga menghasilkan panduan waktu desain sekeliling penggunaan.

Jika nilai null mungkin diteruskan untuk stem argumen , tinjau penggunaan dan perbarui situs panggilan untuk memastikan stem tidak dapat diteruskan sebagai null.

Jika Anda menerapkan supresi peringatan nullability saat mengkonsumsi properti, Anda dapat menghapus supresi tersebut FilePatternMatch.Stem .

API yang terpengaruh