AXzhz

专注ASP.NET!
        写软件的都是小姐,用软件的都是大爷。真TMD说的正确!
                嫖妓不给钱,反说被强奸!___中国共享软件的无奈!
读小学的时候大学不要钱,读大学了小学不要钱。
没工作时国家有分福利房,工作了后全是高价房!!

                        此软件能有效的破解QQ密码。(注:破解QQ密码是违法行为,请不要将软件用于违法行为)
“安得广厦千万间,大庇天下寒士俱欢颜,风雨不动安如山。”1200多年前,诗人杜甫的理想,如今被一帮享受着电脑和互联网带来的快捷生活方式的受过高等教育的大孩子憧憬着。

导航

Help_装箱/拆箱后的【==】与【Equals】问题,『★世界第一难题★』,也许只有编译器才能解释清楚_AX

这个能给我讲明白的,绝对是高人了!
代码如下:    如果不清楚可回帖详问.

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5namespace AX
 6{
 7    class AXzhz
 8    {
 9        static void Main(string[] args)
10        {
11            //创建两个string类型的对象,值均为"ii";
12            string i = "ii";
13            string j = "iii".Substring(1);
14            Console.WriteLine("i和j是否同一个对象:"+ReferenceEquals(i,j));//返回:false
15
16            //装箱
17            object a = i;
18            object b = j;
19
20            //【分析】说明它使用的是object没有重写的"==",即判断引用的是否为同一对象
21            Console.WriteLine(a==b);//返回:false
22            
23            //【分析】说明它使用的是重写过的object方法Equals(),
24            //即string类型的Equals()方法,来判断对象是否为相同内容
25            Console.WriteLine(a.Equals(b));//返回:true
26
27            //【问题】string为引用类型无疑,且【==】和【Equals】都已重写(都为比较对象内容是否相同),
28            //那为什么装箱后【==】使用没有重写(非重载,只有值类型的才重载,真希望这里是值类型,就可以解释通了)
29            //的方法,【Equals】则使用重写过的方法呢?
30
31            /*引自【MSDN】VS2005版
32             *在引用类型中实现相等运算符 (==)
33             *如果类型是 Point、String、BigNumber 等基类型,则应★重写★相等运算符 (==)。
34             * 【附】
35             * 改为封装int/char型,结果相同
36             * 但可以解释为【==】的重载,即object类型中【==】的原始意思:判断是否引用的同一对象,
37             * 而非重载后判断两个对象值是否相同,怎么又回到重写了?晕了,晕了,表妹!!!
38             */

39            Console.ReadLine();
40        }

41    }

42}

43

posted on 2006-11-08 20:55  斧头帮少帮主  阅读(1701)  评论(5编辑  收藏  举报

Google
 
站内搜索:        
园内搜索:
金山词霸: