标签:VID false 结果 实践 stat ret msdn www 其他
以下这个关于 .Net Framework 内建实值类型实践 IComparable 界面的现象很有趣
?????? 以下这个关于 .Net Framework 内建实值类型实践? IComparable
?????? 然后写个范例来测试这些内建的实质类型调用 IComparable
static void Main(string[] args)
{
System.Byte z1 = 9;
System.Byte z2 = 2;
Console.WriteLine(z1.CompareTo(z2));
System.Int16 m1 = 9;
System.Int16 m2 = 2;
Console.WriteLine(m1.CompareTo(m2));
System.UInt16 n1 = 9;
System.UInt16 n2 = 2;
Console.WriteLine(n1.CompareTo(n2));
System.Int32 x1 = 9;
System.Int32 x2 = 2;
Console.WriteLine(x1.CompareTo(x2));
System.UInt32 y1 = 9;
System.UInt32 y2 = 2;
Console.WriteLine(y1.CompareTo(y2));
System.Int64 p1 = 9;
System.Int64 p2 = 2;
Console.WriteLine(p1.CompareTo(p2));
System.UInt64 q1 = 9;
System.UInt64 q2 = 2;
Console.WriteLine(q1.CompareTo(q2));
System.Single i1 = 9;
System.Single i2 = 2;
Console.WriteLine(i1.CompareTo(i2));
System.Double j1 = 9;
System.Double j2 = 2;
Console.WriteLine(j1.CompareTo(j2));
System.Decimal d1 = 9;
System.Decimal d2 = 2;
Console.WriteLine(d1.CompareTo(d2));
Console.ReadLine();
}
?????? 这个结果超逗趣的,在类型为 Byte, Int16 与 UInt16 时,结果是两值相减,以上面的范例看起来就是 7 ( 内部实践的确是两值相减);而其他的类型答案则是 1 (这些类型的实践就是大于时回传 1,相等回传 0,小于则回传? -1)。
?????? 这告诉我们在用 IComparable
static void Main(string[] args)
{
Int32 x1 = 3, x2 = 1;
Console.WriteLine((x1.CompareTo(x2) == ((UInt32)x1).CompareTo((UInt32)x2)).ToString());
Console.WriteLine((x1.CompareTo(x2) == ((UInt16)x1).CompareTo((UInt16)x2)).ToString());
Int32 y1 = 2, y2 = 1;
Console.WriteLine((y1.CompareTo(y2) == ((UInt32)y1).CompareTo((UInt32)y2)).ToString());
Console.WriteLine((y1.CompareTo(y2) == ((UInt16)y1).CompareTo((UInt16)y2)).ToString());
Console.ReadLine();
}
?????? 答案是 True、False、True、True。说实话,这个题目拿出来考还真的满整人的,然后 MSDN 文档的注解还真是让你没话可说。
标签:VID false 结果 实践 stat ret msdn www 其他
原文地址:https://www.cnblogs.com/petewell/p/11452929.html