Novas sobrecargas TimeSpan.From*() que usam inteiros

Novas TimeSpan.From*() sobrecargas que aceitam inteiros foram introduzidas no .NET 9. Essa alteração pode causar ambiguidade para o compilador F# e resultar em erros no tempo de compilação.

Comportamento anterior

Anteriormente, havia uma única sobrecarga para cada TimeSpan.From*() método, a saber:

Novo comportamento

A partir do .NET 9, foram adicionadas novas sobrecargas que aceitam argumentos inteiros. Chamar um método como TimeSpan.FromMinutes(20) no código F# resulta em um erro no tempo de compilação:

erro FS0041: não foi possível determinar uma sobrecarga exclusiva para o método 'FromMinutes' com base nas informações de tipo anteriores a esse ponto do programa. Pode ser necessária uma anotação de tipo. Tipo de argumento conhecido: intCandidates: - TimeSpan.FromMinutes(minutes: int64) : TimeSpan - TimeSpan.FromMinutes(minutes: int64, ?seconds: int64, ?milliseconds: int64, ?microseconds: int64) : TimeSpan - TimeSpan.FromMinutes(value: float) : TimeSpan

Versão introduzida

Versão Prévia 3 do .NET 9

Tipo de alteração interruptiva

Essa alteração pode afetar a compatibilidade da origem para o código F#.

Motivo da alteração

As sobrecargas pré-existentes aceitaram um Double argumento. No entanto, Double é um formato de ponto flutuante baseado em binário e, portanto, tem imprecisão natural que pode introduzir erro. Esse comportamento gerou confusão entre os usuários e bugs na superfície da API. É também uma das maneiras menos eficientes de representar esses dados. Para produzir o comportamento pretendido, foram introduzidas novas sobrecargas que permitem aos usuários passar números inteiros.

Se essa alteração afetar o código F#, especifique o tipo de argumento para que o compilador selecione a sobrecarga adequada.

APIs afetadas