在 .NET 9 中,params Span<T> 功能的重大變更會引起與StringValues的隱含運算符間的模棱兩可。 這項變更會導致編譯程式在遇到模棱兩可的方法呼叫時擲回錯誤 CS0121 。
先前的行為
先前在 受影響 API 一節中提及的 API,沒有與 StringValues 的隱含運算子混淆的多載。 因此,編譯程式會毫無問題地解決多載函式。
新行為
編譯程式在遇到這些模棱兩可的多載時擲回錯誤 CS0121 ,導致下列錯誤:
CS0121: The call is ambiguous between the following methods or properties: 'Program.Join(string, params string[])' and 'Program.Join(string, params ReadOnlySpan<string>)'
推出的版本
.NET 9
破壞性變更的類型
這項變更是 來源相容性 變更。
變更的原因
StringValues 具有的隱含運算符 string ,且 string[] 會導致與 params Span<T> lang 功能衝突。
建議的動作
將自變數轉換成適當的類型或套用具名參數,明確指定您想要呼叫的方法。
受影響的 API
- System.String.Concat(ReadOnlySpan<String>)
- System.String.Join(Char, ReadOnlySpan<String>)
- System.String.Join(String, ReadOnlySpan<String>)
- System.IO.Path.Combine(ReadOnlySpan<String>)
- System.IO.Path.Join(ReadOnlySpan<String>)
- System.Text.StringBuilder.AppendJoin(String, ReadOnlySpan<String>)
- System.Text.StringBuilder.AppendJoin(Char, ReadOnlySpan<Object>)