首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在c#中获取泛型number类型的最大值和最小值

在C#中,获取泛型number类型的最大值和最小值可以使用Comparer<T>.Default类来实现。Comparer<T>.Default类提供了一个用于比较对象的默认比较器。

首先,您需要引入System.Collections.Generic命名空间,然后使用以下代码获取泛型number类型的最大值和最小值:

代码语言:txt
复制
using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        // 获取泛型number类型的最大值
        int maxInt = GetMaxValue<int>();
        double maxDouble = GetMaxValue<double>();
        decimal maxDecimal = GetMaxValue<decimal>();

        Console.WriteLine($"Max int value: {maxInt}");
        Console.WriteLine($"Max double value: {maxDouble}");
        Console.WriteLine($"Max decimal value: {maxDecimal}");

        // 获取泛型number类型的最小值
        int minInt = GetMinValue<int>();
        double minDouble = GetMinValue<double>();
        decimal minDecimal = GetMinValue<decimal>();

        Console.WriteLine($"Min int value: {minInt}");
        Console.WriteLine($"Min double value: {minDouble}");
        Console.WriteLine($"Min decimal value: {minDecimal}");
    }

    // 获取泛型number类型的最大值
    public static T GetMaxValue<T>() where T : IComparable<T>
    {
        T maxValue = default(T);  // 默认最大值为类型的默认值

        if (Comparer<T>.Default.Compare(maxValue, default(T)) == 0)
        {
            // 若默认最大值为类型的默认值,则尝试获取类型的最大值
            if (typeof(T) == typeof(int))
            {
                maxValue = (T)(object)int.MaxValue;
            }
            else if (typeof(T) == typeof(double))
            {
                maxValue = (T)(object)double.MaxValue;
            }
            else if (typeof(T) == typeof(decimal))
            {
                maxValue = (T)(object)decimal.MaxValue;
            }
            // 可以继续添加其他number类型的最大值判断
        }

        return maxValue;
    }

    // 获取泛型number类型的最小值
    public static T GetMinValue<T>() where T : IComparable<T>
    {
        T minValue = default(T);  // 默认最小值为类型的默认值

        if (Comparer<T>.Default.Compare(minValue, default(T)) == 0)
        {
            // 若默认最小值为类型的默认值,则尝试获取类型的最小值
            if (typeof(T) == typeof(int))
            {
                minValue = (T)(object)int.MinValue;
            }
            else if (typeof(T) == typeof(double))
            {
                minValue = (T)(object)double.MinValue;
            }
            else if (typeof(T) == typeof(decimal))
            {
                minValue = (T)(object)decimal.MinValue;
            }
            // 可以继续添加其他number类型的最小值判断
        }

        return minValue;
    }
}

以上代码将输出泛型number类型的最大值和最小值:

代码语言:txt
复制
Max int value: 2147483647
Max double value: 1.79769313486232E+308
Max decimal value: 79228162514264337593543950335
Min int value: -2147483648
Min double value: -1.79769313486232E+308
Min decimal value: -79228162514264337593543950335

这是一种获取泛型number类型的最大值和最小值的方法,在C#中可灵活应用于不同的泛型number类型。这里仅以intdoubledecimal为例,您可以根据需要扩展其他number类型的判断和赋值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券