C# 泛型约束实现求和操作 - 代码示例与解析
在 C# 中,可以使用泛型约束来对泛型类型进行限制。如果想要对泛型类型进行求和操作,可以使用以下代码示例:
using System;
public interface INumber
{
double Value { get; }
}
public class Number<T> : INumber
{
public T Value { get; set; }
public Number(T value)
{
Value = value;
}
double INumber.Value => Convert.ToDouble(Value);
}
public static class Calculator
{
public static T Sum<T>(params T[] numbers) where T : INumber
{
double sum = 0;
foreach (var number in numbers)
{
sum += number.Value;
}
return (T)Activator.CreateInstance(typeof(T), sum);
}
}
public class Program
{
public static void Main(string[] args)
{
var number1 = new Number<int>(5);
var number2 = new Number<double>(3.5);
var number3 = new Number<decimal>(2.7m);
var sum = Calculator.Sum(number1, number2, number3);
Console.WriteLine(sum.Value); // 输出: 11.2
}
}
在上述代码中,首先定义了一个INumber接口,该接口用于表示可以进行求和操作的类型。然后,定义了一个Number<T>类,该类实现了INumber接口,并使用Value属性来存储具体的数值。
接下来,定义了一个静态的Calculator类,该类包含了一个Sum方法,该方法接受一个泛型参数T,并使用where T : INumber来限制T必须是实现了INumber接口的类型。在Sum方法中,通过遍历传入的参数数组,将每个数值相加得到总和,并使用Activator.CreateInstance方法创建一个新的T类型的实例,将总和作为参数传入。
最后,在Main方法中创建了三个不同类型的Number实例,并调用Calculator.Sum方法对它们进行求和操作,最终输出结果为11.2。
原文地址: https://www.cveoy.top/t/topic/bMy9 著作权归作者所有。请勿转载和采集!