New TimeSpan.From*() přetížení, která přebírají celá čísla
Nová TimeSpan.From*()
přetížení, která přijímají celá čísla, byla zavedena v .NET 9. Tato změna může způsobit nejednoznačnost kompilátoru jazyka F# a vést k chybám v době kompilace.
Předchozí chování
Dříve došlo k jednomu přetížení pro každou TimeSpan.From*()
metodu, konkrétně:
- FromDays(Double)
- FromHours(Double)
- FromMicroseconds(Double)
- FromMilliseconds(Double)
- FromMinutes(Double)
- FromSeconds(Double)
Nové chování
Počínaje rozhraním .NET 9 jsme přidali nová přetížení, která přijímají celočíselné argumenty. Volání metody, například TimeSpan.FromMinutes(20)
v kódu jazyka F#, má za následek chybu v době kompilace:
chyba FS0041: Jedinečné přetížení metody FromMinutes nelze určit na základě informací o typu před tímto bodem programu. Je možné, že budete potřebovat poznámku typu. Známý typ argumentu: intCandidates: - TimeSpan.FromMinutes(minutes: int64) : TimeSpan - TimeSpan.FromMinutes(minutes: int64, ?seconds: int64, ?milliseconds: int64, ?microseconds: int64) : TimeSpan - TimeSpan.FromMinutes(value: float) : TimeSpan
Zavedená verze
.NET 9 Preview 3
Typ zásadní změny
Tato změna může ovlivnit kompatibilitu zdroje pro kód jazyka F#.
Důvod změny
Před existující přetížení přijal Double argument. Jedná Double se však o binární formát s plovoucí desetinou čárkou, který má přirozenou nepřesnost, která může zavádět chybu. Toto chování vedlo k nejasnostem uživatelů a chybám na povrchu rozhraní API. Je to také jeden z méně efektivních způsobů, jak tato data znázornit. Za účelem vytvoření zamýšleného chování byly zavedeny nové přetížení, která uživatelům umožňují předávat celá čísla.
Doporučená akce
Pokud tato změna ovlivní váš kód jazyka F#, zadejte typ argumentu, aby kompilátor vybral příslušné přetížení.