.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
相关产品推荐
相关产品推荐

