Sdílet prostřednictvím


FilePatternMatch.Stem se změnil na hodnotu non-nullable

Vlastnost FilePatternMatch.Stem byla dříve anotována jako nullable, protože PatternTestResult.Stem vlastnost, ze které získá její hodnotu, je nullable. PatternTestResult I když výsledek skutečně může být null, pokud výsledek není úspěšný, nikdy není, protože je vytvořen pouze tehdy, FilePatternMatch když PatternTestResult je úspěšný.

Aby bylo možné přesně odrážet hodnotu null, [MemberNotNullWhen()] atribut se použije na PatternTestResult.Stem vlastnost, aby kompilátoru řekl, že nebude null, pokud je úspěšný. Kromě toho stem argument předaný do konstruktoru FilePatternMatch již není nullable a ArgumentNullException bude vyvolána, pokud je předána hodnota null stem .

Verze byla představena

.NET 10

Předchozí chování

Dříve konstruktor FilePatternMatch přijímal parametr stemnull bez jakýchkoli upozornění nebo chyb při kompilaci či za běhu.

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

Vlastnost FilePatternMatch.Stem byla také označena jako nullable.

Nové chování

Počínaje rozhraním .NET 10 se předáním null nebo případně nulové hodnoty argumentu stem v konstruktoru FilePatternMatch zobrazí upozornění v době kompilace. A pokud je null předán, vyvolá se za běhu výjimka ArgumentNullException.

Vlastnost FilePatternMatch.Stem je nyní označena poznámkami, že hodnota nebude null, pokud IsSuccessful je true.

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

Typ zásadní změny

Tato změna může mít vliv na kompatibilitu zdroje a jedná se o změnu chování.

Důvod změny

Předchozí poznámky s hodnotou nullability byly nepřesné a null hodnota argumentu stem byla neočekávaná, ale nebyla správně chráněna. Tato změna odráží očekávané chování rozhraní API a chrání před nepředvídatelným chováním a zároveň vytváří pokyny k návrhu týkající se použití.

Pokud byla pro stem argument předána možná hodnota null, zkontrolujte využití a aktualizujte web volání, aby se zajistilo stem , že nelze paTssed in as null.

Pokud jste při používání vlastnosti použili potlačení s možnou FilePatternMatch.Stem hodnotou null, můžete tyto potlačení odebrat.

Ovlivněná rozhraní API