generics - 如何在 F# 中正确使用 .NET 7 中的 INumber?

标签 generics interface f# .net-7.0 .net-generic-math

我正在阅读有关 .NET 7 和 INumber 的以下内容:

它给出了添加两个 INumber 泛型值的示例,我尝试在 F# 中复制该值,但没有成功。

let add<'T when 'T :> INumber<'T>>
    (left : 'T) (right: 'T) : 'T =
    left + right

这给出了“声明的类型参数'T无法在运行时解析。 当我尝试不同的方式时,要非常清楚:

let add<'T when 'T :> INumber<'T>>
        (left : 'T) (right: 'T) : 'T =
        INumber<'T>.``+`` left right

“INumber<'T'>.+ 未定义。”

请有人帮助我了解如何进行这项工作,并提供此类内容的正确格式?

最佳答案

.NET 7 release notes 中所写要在 Visual Studio 中支持 .NET 7,您需要安装 17.4+ 版本:

You need Visual Studio 17.4 latest preview to use .NET 7.0 on Windows. On macOS, you need the latest version of Visual Studio for Mac. The C# extension for Visual Studio Code supports .NET 7.0 and C# 11.

关于generics - 如何在 F# 中正确使用 .NET 7 中的 INumber?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74379268/

相关文章:

c# - 无法实现接口(interface)成员,因为它没有 List<IInterface> 的匹配返回类型

F# 交互,API 对 dll 引用的限制

F#:嵌套的可区分联合和匹配

generics - Rust:从(仅)<T> 不同的函数返回通用结构

c# - Entity Framework : Implement interfaces for unit test

c# - 如何将字符串转换为 Int 集合

c# - C# 中的接口(interface)

f# - 如何在 F# 中从指向十进制变量的指针创建 Span<int>?

c# - 使用反射区分重载方法的泛型和非泛型版本

java - 将未知泛型类型与 List 类一起使用