Delen via


Nieuwe TimeSpan.From*() overbelastingen die gehele getallen aannemen

Nieuwe TimeSpan.From*() overbelastingen die gehele getallen accepteren, zijn geïntroduceerd in .NET 9. Deze wijziging kan dubbelzinnigheid veroorzaken voor de F#-compiler en leiden tot compilatiefouten.

Vorig gedrag

Voorheen was er één overbelasting voor elke TimeSpan.From*() methode, namelijk:

Nieuw gedrag

Vanaf .NET 9 zijn nieuwe overbelastingen toegevoegd die gehele getallen accepteren. Het aanroepen van een methode, zoals TimeSpan.FromMinutes(20) in F#-code, resulteert in een compilatietijdfout:

fout FS0041: Een unieke overbelasting voor methode 'FromMinutes' kan niet worden bepaald op basis van typegegevens vóór dit programmapunt. Mogelijk is er een typeaantekening nodig. Bekend type argument: intCandidates: - TimeSpan.FromMinutes(minutes: int64) : TimeSpan - TimeSpan.FromMinutes(minutes: int64, ?seconds: int64, ?milliseconden: int64, ?microseconds: int64) : TimeSpan - TimeSpan.FromMinutes(value: float) : TimeSpan

Versie geïntroduceerd

.NET 9 Preview 3

Type wijziging die fouten veroorzaken

Deze wijziging kan van invloed zijn op de broncompatibiliteit voor F#-code.

Reden voor wijziging

De bestaande overbelastingen hebben een Double argument geaccepteerd. Double Is echter een binaire, drijvendekommage-indeling en heeft dus natuurlijke onnauwkeurigheid die fouten kan veroorzaken. Dit gedrag heeft geleid tot verwarring van gebruikers en bugs in het API-gebied. Het is ook een van de minder efficiënte manieren om deze gegevens weer te geven. Om het beoogde gedrag te produceren, zijn nieuwe overbelastingen geïntroduceerd waarmee gebruikers gehele getallen kunnen doorgeven.

Als deze wijziging van invloed is op uw F#-code, geeft u het type argument op, zodat de compiler de juiste overbelasting selecteert.

Betrokken API's