直接上代码:
cs
namespace _01.基础数据类型
{
internal class Program
{
/// <summary>
/// 打印c#缺省类型的最大值、最小值和占用空间大小(字节)
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Show<int>(sizeof(int));
Show<long>(sizeof(long));
Show<float>(sizeof(float));
Show<double>(sizeof(double));
Show<decimal>(sizeof(decimal));
Show<bool>(sizeof(bool));
Show<char>(sizeof(char));
Show<sbyte>(sizeof(sbyte));
Show<short>(sizeof(short));
Show<uint>(sizeof(uint));
Show<ushort>(sizeof(ushort));
Show<ulong>(sizeof(ulong));
Show<byte>(sizeof(byte));
}
static void Show<T>(int size)
{
T maxValue;
T minValue;
GetDefaultTypeMaxValueAndMinValue<T>(typeof(T),
out maxValue, out minValue);
PrintDefaultTypeInfo(typeof(T), maxValue, minValue, size);
}
static void PrintDefaultTypeInfo<T>(Type type, T maxValue, T minValue, int size)
{
Console.WriteLine($"类型:{type.FullName},最大值:{maxValue}; 最小值:{minValue};大小:{size}");
}
//求默认类型的最大值和最小值
static void GetDefaultTypeMaxValueAndMinValue<T>(Type type,
out T maxValue, out T minValue)
{
maxValue = default(T);
minValue = default(T);
var prop = type.GetField("MaxValue");
if (prop != null)
{
maxValue = (T)prop.GetValue(null);
}
prop = type.GetField("MinValue");
if (prop != null)
{
minValue = (T)prop.GetValue(null);
}
}
}
}
//类型: System.Int32,最大值:2147483647; 最小值:-2147483648; 大小:4
//类型:System.Int64,最大值:9223372036854775807; 最小值:-9223372036854775808; 大小:8
//类型:System.Single,最大值:3.4028235E+38; 最小值:-3.4028235E+38; 大小:4
//类型:System.Double,最大值:1.7976931348623157E+308; 最小值:-1.7976931348623157E+308; 大小:8
//类型:System.Decimal,最大值:79228162514264337593543950335; 最小值:-79228162514264337593543950335; 大小:16
//类型:System.Boolean,最大值:False; 最小值:False; 大小:1
//类型:System.Char,最大值:?; 最小值:; 大小:2
//类型:System.SByte,最大值:127; 最小值:-128; 大小:1
//类型:System.Int16,最大值:32767; 最小值:-32768; 大小:2
//类型:System.UInt32,最大值:4294967295; 最小值:0; 大小:4
//类型:System.UInt16,最大值:65535; 最小值:0; 大小:2
//类型:System.UInt64,最大值:18446744073709551615; 最小值:0; 大小:8
//类型:System.Byte,最大值:255; 最小值:0; 大小:1