class Node
{
Node node;
date date;
}
main()
{
Node a=new Node();
...
Node b=new Node();
...if(a==b)
{
...
}
}if(a==b)这一句判断的是什么东西,是两个对象的地址,还是内容?

解决方案 »

  1.   

    Node中,自己重载equal方法,实现自己的相等地条件
      

  2.   

    判断的是什么东西完全取决于Node是否重载了==号,未必跟重载Equal方法有关系...只有在没有重载==号的情况下,引用类型实例用==号比较才是比较“引用”——注意是“引用”——“引用”跟“地址”是两码事...
      

  3.   

    如果不重写 Equals()
    那么
    Node a = new Node();
    Node b = new Node();
    a == b 必然不成立。另外,如果你打算重写 Equals() 请遵守以下约定:
    (1)保证如果 a == b,那么 b == a,如果 a != b,那么 b != a。
    (2)保证永远 a == a
    (3)保证如果 a == b, b == c,那么永远 a == c
    (4)保证如果 a == b,那么 a.GetHashCode() == b.GetHashCode()
      

  4.   

    ==默认情况下在内部不就是用的Equal吗?只要重载了Equal,就可以用==来判断了
      

  5.   

    所以说“未必”...只重载==号不重载Equal方法,就会导致==号和Equal方法有不同的行为...虽然这么做违反了重载运算符设计准则,并导致编译器警告,但不能排除有人这么干...
      

  6.   

    如果想判断两个对象是否为同一个,就用Object.ReferenceEqual
    如果想判断两个对象中的值是否]相等,那就逐个比较把
      

  7.   

    自己在类里面重载==以及Equal,想判断哪些东西就判断哪些东西
      

  8.   

    重写equal,自己定义相等条件
      

  9.   

    对象名.equals(对象);
    或者自己写一个类咯。
      引用 属于一种数据类型 与它对应的还有一个是值类型。
           顾名思义,引用类型访问时候,传入的不是值,而是值所在的地址。
     地址是内存中存储数据的单元。