在C#中,获取泛型number类型的最大值和最小值可以使用Comparer<T>.Default
类来实现。Comparer<T>.Default
类提供了一个用于比较对象的默认比较器。
首先,您需要引入System.Collections.Generic
命名空间,然后使用以下代码获取泛型number类型的最大值和最小值:
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类型的最大值和最小值:
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类型。这里仅以int
、double
和decimal
为例,您可以根据需要扩展其他number类型的判断和赋值。
领取专属 10元无门槛券
手把手带您无忧上云