对象比较“==”是比较地址还是值
对比的是对象地址还是它们的值?
例如 class A{ string name; ...}
数组 A[] a = new A[6];
那
if(a[1] == a[2])
{ ... }
if(a[1].name == a[2].name)
{ ... }
这两种对比哪种快?
------解决方案--------------------== 在对于不同对象比较时方式不一样
对于引用对象 比较的是引用
对于值对象 比较的是值
但是这是一般原则,有特殊,比如字符串类型
本身是引用类型,但是 == 比较的是值
速度上没法做比较 比较的东西都不一样
------解决方案--------------------也就是说,对于一般的引用对象
比较的就是“是否是同一个东西”
再确切点说,就是“是否是指向内存里的同一个对象”
对于值对象
就要理解为“是否是一样的值”,而这两个值可能属于两个完全不同类型的对象
------解决方案--------------------class 如果实现IComparable
== 是值比较
否则引用比较
------解决方案--------------------这个要看类是怎么定义==这个运算符的,
如果是类,则一般为引用是否相等,
但是String类则不是这个规则,它是比较两个字符串内容是否相等.
如果是值类型,则直接比较等是否一样.
------解决方案--------------------要看各个object是怎么重载==运算符的
------解决方案--------------------除了string,不要重载==。