共用方式為


採用整數的新 TimeSpan.From*() 多載

在 .NET 9 中,引進了接受整數的新 TimeSpan.From*() 多載。 這項變更可能會對 F# 編譯器產生歧義,導致編譯時出錯。

先前的行為

之前,每個 TimeSpan.From*() 方法只有單一多載,例如:

新的行為

從 .NET 9 開始,新增了接受整數引數的新多載。 在 F# 程式碼中呼叫 TimeSpan.FromMinutes(20) 之類的方法會導致編譯時出錯:

錯誤 FS0041:無法根據此程式點之前的型別資訊來確定方法 'FromMinutes' 的唯一多載。 可能需要型別註釋。 已知的引數型別:intCandidates: - TimeSpan.FromMinutes(minutes: int64) : TimeSpan - TimeSpan.FromMinutes(minutes: int64, ?seconds: int64, ?milliseconds: int64, ?microseconds: int64) : TimeSpan - TimeSpan.FromMinutes(value: float) : TimeSpan

導入的版本

.NET 9 Preview 3

中斷性變更的類型

此變更可能會影響 F# 程式碼的原始碼相容性

變更原因

先前已存在的多載接受的是 Double 引數。 然而,Double 是一種二進位的浮點格式,因此具有天然的不精確性,可能會造成錯誤。 這種行為造成使用者困惑和 API 介面錯誤。 以其來表示此資料也是效率較低的方法之一。 為了實現預期的行為,引進了新的多載,讓使用者能夠傳入整數。

如果這項變更會影響您的 F# 程式碼,可以指定引數型別來讓編譯器選擇適當的多載。

受影響的 API