1. 基础类型
System.IComparable
int CompareTo(object obj);
System.IComparable
int CompareTo(T obj);
System.IEquatable
bool Equals(T other)
System.IConvertible
TypeCode GetTypeCode();
bool ToBoolean(IFormatProvider provider);
char ToChar(IFormatProvider provider);
sbyte ToSByte(IFormatProvider provider);
byte ToByte(IFormatProvider provider);
short ToInt16(IFormatProvider provider);
ushort ToUInt16(IFormatProvider provider);
int ToInt32(IFormatProvider provider);
uint ToUInt32(IFormatProvider provider);
long ToInt64(IFormatProvider provider);
ulong ToUInt64(IFormatProvider provider);
float ToSingle(IFormatProvider provider);
double ToDouble(IFormatProvider provider);
Decimal ToDecimal(IFormatProvider provider);
DateTime ToDateTime(IFormatProvider provider);
String ToString(IFormatProvider provider);
Object ToType(Type conversionType, IFormatProvider provider);
Boolean :IComparable,IConvertible,IComparable,IEquatable
内部使用 bool m_value
然后维护了=1,=0 两个字段
维护了 "True","False" 的两个字段
Parse()
TryParse()
Char: IComparable,IConvertible,IComparable,IEquatable
内部使用 char m_value 来存值
maxvalue=oxffff; //65535 两个字节,所以足够保存unicode了,这是为了简化unicode的操作的设计,所以char能够方便的保存汉字等unicode字符
minvalue=0
isxxxx() //很多isxxx的方法
SByte: IComparable,IFormattable,IConvertible,IComparable,IEquatable
内部使用 sbyte m_value
MaxValue 0x7f; //127 一个字节
MinValue = unchecked((sbyte)0x80); //注意sbyte的强制转换 -127
Parse() 居然是用的是Number.Parse32() 然后判断范围后直接转sbyte
Tryparse() -> Number.TryParse32()
Byte:IComparable,IFormattable,IConvertible
与sbyte的区别是只表示1个字节的正值
内部使用 byte m_value 来存值
maxvalue=oxff; //255 一个字节
minvalue=0
short Int16 :
short m_value;
MaxValue = 0x7fff; //32767 两个字节
MinValue = unchecked((short)0x8000) //注意short的转化,所以不是正的,而是-32768
ushort UInt16:
ushort m_value
MaxValue = 0xffff; //65535;
minValue = 0;
Int32
int m_value
MaxValue = 0x7fffffff;//21.47亿 4个字节
Minvlaue = unchecked((int)ox8000000); //-21.47亿
UInt32
uint m_value;
MaxValue = 0xffffffff;
MinValue = 0U;
Int64
long m_value;
MaxValue = ox 7fff,ffff,ffff,ffff; //2^63-1 8字节
MinValue = unchecked(long(ox8000,0000,0000,0000)); // -2^63
UInt64
ulong m_value;
MaxValue = ox ffff,ffff,ffff,ffff; //2^64-1 8字节
MinValue = ox0;
Single: IComparable,IFormattable,IConvertible
4字节, 7位精度
float m_vlaue;
MinValue = (float)-3.40282346638528859e+38
MaxValue = (float)3.40282346638528859e+38;
sizeof 计算非托管类型
计算比如基元类型,所有的struct
sizeof(float); //4
sizeof(double); //8
sizeof(decimal); //16
sizeof(TypeCode); //4
sizeof(CustEnum); //4 自定义枚举
Double
8字节,15-16 位精度
MaxValue = 1.7976931348623157E+308
MinValue = -1.7976931348623157E+308
Decimal
16字节,28-29 位精度
MaxValue = 79228162514264337593543950335m;
MinValue = -79228162514264337593543950335m;
这就是