Partager via


Nouvelles surcharges TimeSpan.From*() qui acceptent des entiers

De nouvelles surcharges TimeSpan.From*() qui acceptent des entiers ont été introduites dans .NET 9. Cette modification peut entraîner une ambiguïté pour le compilateur F# et provoquer des erreurs au moment de la compilation.

Comportement précédent

Auparavant, il y avait une surcharge unique pour chaque méthode TimeSpan.From*(), à savoir :

Nouveau comportement

À compter de .NET 9, de nouvelles surcharges ont été ajoutées, qui acceptent des arguments entiers. L’appel d’une méthode telle que TimeSpan.FromMinutes(20) dans le code F# entraîne une erreur au moment de la compilation :

erreur FS0041 : impossible de déterminer une surcharge unique pour la méthode « FromMinutes » en fonction des informations de type antérieures à ce point de programme. Une annotation de type peut être nécessaire. Type d’argument connu : intCandidates: - TimeSpan.FromMinutes(minutes: int64) : TimeSpan - TimeSpan.FromMinutes(minutes: int64, ?seconds: int64, ?milliseconds: int64, ?microseconds: int64) : TimeSpan - TimeSpan.FromMinutes(value: float) : TimeSpan

Version introduite

.NET 9 Preview 3

Type de changement cassant

Ce changement peut affecter la compatibilité source pour le code F#.

Raison du changement

Les surcharges préexistantes ont accepté un argument Double. Toutefois, Double est un format à virgule flottante de type binaire et comporte donc une imprécision naturelle qui peut introduire une erreur. Ce comportement a entraîné une confusion des utilisateurs et des bogues dans la surface de l'API. Il s’agit également de l’une des façons les moins efficaces de représenter ces données. Pour générer le comportement prévu, de nouvelles surcharges ont été introduites pour permettre aux utilisateurs de passer des entiers.

Si cette modification affecte votre code F#, spécifiez le type d’argument afin que le compilateur sélectionne la surcharge appropriée.

API affectées