Partilhar via


Novas sobrecargas TimeSpan.From*() que utilizam números 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 em 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, novas sobrecargas foram adicionadas que aceitam argumentos inteiros. Chamar um método como TimeSpan.FromMinutes(20) no código F# resulta em um erro em tempo de compilação:

erro FS0041: Uma sobrecarga exclusiva para o método 'FromMinutes' não pôde ser determinada com base nas informações de tipo anteriores a este ponto do programa. Pode ser necessária uma anotação de tipo. Tipo conhecido de argumento: 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

.NET 9 Visualização 3

Tipo de mudança de rutura

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

Razão para a alteração

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

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

APIs afetadas