C#小问题请教

来源:百度知道 编辑:UC知道 时间:2024/09/18 19:44:04
static void Main()
{
int i=123;
int j=123;
console.writeline( (object)i==(object)j );
}
为什么输出是FALSE,详细解析下谢谢

你好。
当int i,j经过(object)转换由值类型转换成引用类型!(object)i,j对象存储的是变量的地址,而不再是变量的值。现在(object)i和(object)j是两个不同的引用类型变量!所以存储他们的地址也就不一样。

object型比较永远都不相等

楼上的瞎说.

object类型.进行对比要用Equals.

((object)i).Equals((object)j);

i,j 都是值类型, (object)i,(object)j 将i,j装箱后成为两个引用类型, 指向不同的对象.

同意“贰壹肆伍捌 ”的说法,object类型.进行对比要用Equals
LZ的比较肯定不会相等,int是值类型,指向不同的内存地址

他们说的对 我来个通俗的说法就是:
i和j是2个同名的中国人 还是男人 反正看数据都一样地!
然后object就是查他们的所在地
结果当然是不一样地!——鉴定完毕