在 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。

C# 泛型约束实现求和操作 - 代码示例与解析

原文地址: https://www.cveoy.top/t/topic/bMy9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录