namespace ConsoleApplication2{
class Program{
static void Main(string[] args){
int i = 123; object a1 = i;
object a2 = (object)i;
int j = (int)a1; Console.WriteLine(a1==a2);
Console.WriteLine(j == i); Console.ReadKey();
}
}
}执行这段代码后,为什么分别输出的是False和True?
而我看的是True啊和False.
class Program{
static void Main(string[] args){
int i = 123; object a1 = i;
object a2 = (object)i;
int j = (int)a1; Console.WriteLine(a1==a2);
Console.WriteLine(j == i); Console.ReadKey();
}
}
}执行这段代码后,为什么分别输出的是False和True?
而我看的是True啊和False.
a1 == a2 比较的是两个对象是不是同一个,显然不是。
j == i 比较的是他们的值是否相等,所以为 true。
==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
int ia = 5;
int ib = 5;
object oa = ia; //装箱
object ob = ib;
Console.WriteLine(oa == ob); // 结果是 false!!!
所以我以为 == 就只是比较值。
而在a1 == a2 时,比较的是对象。而不是值。
而i ==j的时候,比较的是值。
所以输出的就是False和True.
是这样的吧。