Freigeben über


Mehrdeutige Überladungsauflösung, die sich auf implizite StringValues-Operatoren auswirkt

In .NET 9 entsteht durch eine einschneidende Änderung des Features params Span<T> lang eine Mehrdeutigkeit mit den impliziten Operatoren von StringValues. Diese Änderung führt dazu, dass der Compiler Fehler CS0121 auslöst, wenn es auf mehrdeutige Methodenaufrufe stößt.

Vorheriges Verhalten

Die in den betroffenen APIs Abschnitt erwähnten APIs hatten zuvor keine Überladungen mehrdeutig mit den impliziten Operatoren von StringValues. Daher würde der Compiler die Überladungen ohne Probleme beheben.

Neues Verhalten

Der Compiler löst fehler CS0121 beim Auftreten dieser mehrdeutigen Überladungen aus, was zu folgendem Fehler führt:

CS0121: The call is ambiguous between the following methods or properties: 'Program.Join(string, params string[])' and 'Program.Join(string, params ReadOnlySpan<string>)'

Version eingeführt

.NET 9

Art der kompatibilitätsbrechenden Änderung

Diese Änderung ist eine Änderung der Quellkompatibilität.

Grund für Änderung

StringValues verfügt über implizite Operatoren für string und string[], die Konflikte mit dem feature params Span<T> langverursachen.

Geben Sie explizit die Methode an, die Sie aufrufen möchten, indem Sie die Argumente in den entsprechenden Typ umwandeln oder benannte Parameter anwenden.

Betroffene APIs