You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7中如何使用兼容任意数值类型的泛型INumber变量?

.NET 7中使用INumber<TSelf>处理任意数值类型

在.NET 7里,我们可以借助新的INumber<TSelf>接口来引用任意数值类型,示例代码如下:

using System.Numerics;

INumber<int> myNumber = 72;
INumber<float> mySecondNumber = 93.63f;

不过受限于INumber的类型约束,我们没办法直接创建不带泛型参数的INumber引用用来容纳任意数值类型,下面这段代码无法正常运行:

using System.Numerics;

INumber myNumber = 72;
myNumber = 93.63f;

如果想要创建一个能存储任意数值对象的数组,并且调用要求传入INumber<TSelf>对象的方法,可以参考以下实现:

using System.Numerics;

object[] numbers = new object[] { 1, 2.5, 5, 0x1001, 72 };

for (int i = 0; i < numbers.Length - 1; i++)
{
    Console.WriteLine("{0} plus {1} equals {2}", numbers[i], numbers[i + 1], AddNumbers(numbers[i], numbers[i + 1]));
}

static T AddNumbers<T>(T left, T right) where T : INumber<T> => left + right;

内容的提问来源于stack exchange,提问作者Jossean Yamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:15:41