值类型直接用 == 号判断就好。
但是对于引用类型,需要实现IComparable 接口,或者重写 Equal 方法,来实现自己的比较目的。
因为对于引用类型,==号比较的是入口地址,对于同一个class 实现的两个objects来说,其入口地址显然不同。
例如:判断List相等
List<string> list1 = new List<String>() { "1", "2", "3", }; List<string> list2 = new List<String>() { "1", "2", "3", }; bool compare1 = list1 == list2; // False bool compare2 = list1.Equals(list2); // False bool compare3 = list1.SequenceEqual(list2); //True
注意: 用==, Equals对对象判断的时候,由于对象的引用地址不同,上述中的compare1, compare2 都返回为 false. 只有 compare3 是 true;