首页 新闻 搜索 专区 学院

关于引用类型的比较,新手问题

0
[已解决问题] 解决于 2012-08-14 13:17

引用类型的比较比的是 是否都指向内存中的同一个变量,而不是比较两个变量中的内容,如果他们指向两个分离的对象,哪怕这两个对象的内容是相同的,比较的结果也为false,那么谁能帮我写个程序,证明(如果他们指向两个分离的对象,哪怕这两个对象的内容是相同的,比较的结果也为false)这句话?谢谢了,最好用C#语言

微澜的主页 微澜 | 初学一级 | 园豆:-1
提问于:2012-06-14 20:33
< >
分享
最佳答案
0

你使用的引用类型是什么类型?系统不少自带的引用类型都是重载过Equals方法的

你要证明就自己申明个Class 然后让他的数据成员值都一样,然后用Equals来比较

比如

    public class Test
    {
        private int val;

        public Test(int i)
        {
            val = i;
        }
    }

            Test a = new Test(1);
            Test b = new Test(1);
            bool isEqual= a.Equals(b);
奖励园豆:5
松鼠鱼 | 初学一级 |园豆:185 | 2012-06-15 17:55
其他回答(2)
0

分离的?没听说过,其实写程序更注重于实践,对于那些空洞的理论不要仔细去扣!

钢的锅 | 园豆:14 (初学一级) | 2012-06-14 21:17

是么,呵呵。

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-06-14 21:33
0

自己写个重载操作符就好了。

把几个关键的地方检查是否一致就OK了。

无之无 | 园豆:5085 (大侠五级) | 2012-06-14 21:39

貌似不是用重载运算符做的,我是在ASP.net3.5从入门到精通那本书看到这句话的,我是怎么验证都是验证的相等,实在是没招了

支持(0) 反对(0) 微澜 | 园豆:-1 (初学一级) | 2012-06-14 22:52

@微澜: 

你重载Equals方法没?

支持(0) 反对(0) Darren Fang | 园豆:215 (菜鸟二级) | 2012-06-14 23:38

@微澜: 

MyClass o1;

MyClass o2;

如果你使用:

o1.Equals(o2)或object.Equals(o1, o2);

那么,重载Equals就好了(同时也会提醒你重载gethashcode方法)。

你还可以自己定义一个方法:

MyClass.Equals(MyClass o1, MyClass o2)这样也好,不过,调用的时候就必须使用MyClass.Equals了。

如果你想这样比较:

o1== o2

o1!=o2

就一定要重载操作符。

支持(0) 反对(0) 无之无 | 园豆:5085 (大侠五级) | 2012-06-15 08:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册