整数を使用する新しい TimeSpan.From*() オーバーロード
.NET 9 では、整数を受け入れる新しい TimeSpan.From*()
オーバーロードが導入されました。 この変更により、F# コンパイラにあいまいさが生じ、コンパイル時エラーが発生する可能性があります。
以前の動作
以前は、次のように、TimeSpan.From*()
メソッドごとに 1 つのオーバーロードがありました。
- FromDays(Double)
- FromHours(Double)
- FromMicroseconds(Double)
- FromMilliseconds(Double)
- FromMinutes(Double)
- FromSeconds(Double)
新しい動作
.NET 9 以降、整数引数を使用する新しいオーバーロードが追加されました。 F# コードで TimeSpan.FromMinutes(20)
などのメソッドを呼び出すと、コンパイル時エラーが発生します。
error FS0041: メソッド "FromMinutes" に固有のオーバーロードは、このプログラム ポイント以前は、型情報に基づいて決定できませんでした。 型注釈が必要な場合があります。 既知の引数型: intCandidates: - TimeSpan.FromMinutes(minutes: int64) : TimeSpan - TimeSpan.FromMinutes(minutes: int64, ?seconds: int64, ?milliseconds: int64, ?microseconds: int64) : TimeSpan - TimeSpan.FromMinutes(value: float) : TimeSpan
導入されたバージョン
.NET 9 プレビュー 3
破壊的変更の種類
この変更は F# コードのソースの互換性に影響を与える可能性があります。
変更理由
既存のオーバーロードは、Double 引数を受け取りました。 しかし、Double はバイナリベースの浮動小数点形式であるため、エラーが発生する可能性のある自然な不正確さがあります。 この動作により、API サーフェイスでユーザーの混乱とバグが発生しました。 これは、このデータを表す効率の低い方法の 1 つでもあります。 意図した動作を生成するため、ユーザーが整数を渡せるようにする新しいオーバーロードが導入されました。
推奨される操作
この変更が F# コードに影響する場合は、コンパイラが適切なオーバーロードを選択するように引数の型を指定します。
影響を受ける API
.NET