private static void Main() { var a = 1; var b = 2; var c = a == b; //ceq var c11 = 1 == 2; //此方法直接被优化! b = a; a = 3; var z1 = new ComplexNum(100, 200); var z2 = new ComplexNum(100, 200); //比较引用符 Console.WriteLine(ReferenceEquals(z1, z2) ? "引用符比较:它们是同一个复数" : "引用符比较:它们不是同一个复数"); //静态版Equals()函数 Console.WriteLine(Equals(z1, z2) ? "静态版比较,两个复数相等" : "静态版比较,两个复数不相等"); //实例版Equals()函数 Console.WriteLine(z1.Equals(z2) ? "实例版比较,两个复数相等" : "实例版比较,两个复数不相等"); //“==”运算符 Console.WriteLine(z1 == z2 ? "运算符比较,两个复数相等" : "运算符比较,两个复数不相等"); z1 = z2; Console.WriteLine("--------"); var c1 = new Complex(100.1, 200.2); var c2 = new Complex(100.1, 200.2); //var a = ReferenceEquals(c1, c2);//内部的 == 非下面的 == ,下面的 == 是operator重载 //var b = c1 == c2; Console.WriteLine($"c1 is ValueType?:{c1 is ValueType isValueType}"); //比较引用符 // ReSharper disable once ReferenceEqualsWithValueType Console.WriteLine(ReferenceEquals(c1, c2) ? "引用符比较:它们是同一个复数" : "引用符比较:它们不是同一个复数"); //静态版Equals()函数 Console.WriteLine(Equals(c1, c2) ? "静态版比较,两个复数相等" : "静态版比较,两个复数不相等"); //实例版Equals()函数 Console.WriteLine(c1.Equals(c2) ? "实例版比较,两个复数相等" : "实例版比较,两个复数不相等"); //“==”运算符 Console.WriteLine(c1 == c2 ? "运算符比较,两个复数相等" : "运算符比较,两个复数不相等"); List <ComplexNum> list = new List <ComplexNum>(); Console.ReadKey(); }
protected bool Equals(ComplexNum other) { return(_imaginaryPart.Equals(other._imaginaryPart) && _realPart.Equals(other._realPart)); }