Sdílet prostřednictvím


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ě:

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.

Pokud tato změna ovlivní váš kód jazyka F#, zadejte typ argumentu, aby kompilátor vybral příslušné přetížení.

Ovlivněná rozhraní API