public bool Equals(TwoDPoint p) { // If parameter is null return false: if ((object)p == null) { return(false); } // Return true if the fields match: return((x == p.x) && (y == p.y)); }
public static void Main(string[] args) { TwoDPoint point1 = new TwoDPoint(1, 1); TwoDPoint point2 = new TwoDPoint(10, 10); Console.WriteLine("Hash for point1: {0}\tHash for point2: {1}", point1.GetHashCode(), point2.GetHashCode()); TwoDPointWithHash newPoint1 = new TwoDPointWithHash(1, 1); TwoDPointWithHash newPoint2 = new TwoDPointWithHash(10, 10); Console.WriteLine("Hash for point1: {0}\tHash for point2: {1}", newPoint1.GetHashCode(), newPoint2.GetHashCode()); Console.ReadKey(); }
public static void Main1(string[] args) { TwoDPoint point1 = new TwoDPoint(1, 10); TwoDPoint point2 = new TwoDPoint(1, 10); object object1 = (object)point1; object object2 = (object)point2; Console.WriteLine(point1.Equals(point2)); Console.WriteLine(point1 == point2); Console.WriteLine(object1.Equals(object2)); Console.WriteLine(object1 == object2); // false !!!! почему? Console.ReadLine(); // в чем разница определений методов Equals и == ? }
public override bool Equals(Object obj) { // If parameter is null return false. if (obj == null) { return(false); } // If parameter cannot be cast to Point return false. TwoDPoint p = obj as TwoDPoint; if ((Object)p == null) { return(false); } // Return true if the fields match: return((x == p.x) && (y == p.y)); }
static void Main(string[] args) { TwoDPoint point1 = new TwoDPoint(1, 10); TwoDPoint point2 = new TwoDPoint(1, 10); Console.WriteLine("Hash for point1: {0}\tHash for point2: {1}", point1.GetHashCode(), point2.GetHashCode()); TwoDPointWithHash newPoint1 = new TwoDPointWithHash(10, 10); TwoDPointWithHash newPoint2 = new TwoDPointWithHash(1, 1); Console.WriteLine("Hash for point1: {0}\tHash for point2: {1}", newPoint1.GetHashCode(), newPoint2.GetHashCode()); // уникальных точек будет 2, хотя координаты их одинаковы Console.WriteLine("TwoDPoint:"); var twoDPointList = new List <TwoDPoint> { point1, point2 }; var distinctTwoDPointList = twoDPointList.Distinct(); foreach (var point in distinctTwoDPointList) { Console.WriteLine("Distinct point: {0}", point); } // одна уникальная точка Console.WriteLine("TwoDPointWithHash:"); var twoDPointWithHashList = new List <TwoDPointWithHash> { newPoint1, newPoint2 }; var distinctTwoDPointWithHashList = twoDPointWithHashList.Distinct(); foreach (var point in distinctTwoDPointWithHashList) { Console.WriteLine("Distinct point: {0}", point); } Console.ReadKey(); }
public static void Demo(/*string[] args*/) { TwoDPoint point1 = new TwoDPoint(1, 10); TwoDPoint point2 = new TwoDPoint(1, 10); Console.WriteLine("Hash for point1: {0}\tHash for point2: {1}", point1.GetHashCode(), point2.GetHashCode()); TwoDPointWithHash newPoint1 = new TwoDPointWithHash(1, 1); TwoDPointWithHash newPoint2 = new TwoDPointWithHash(10, 10); Console.WriteLine("Hash for point1: {0}\tHash for point2: {1}", newPoint1.GetHashCode(), newPoint2.GetHashCode()); // уникальных точек будет 2, хотя координаты их одинаковы //Console.WriteLine("TwoDPointWithHash:"); // Здесь надо изменить заголовок для точек типа TwoDPoint Console.WriteLine("TwoDPoint:"); var twoDPointList = new List <TwoDPoint> { point1, point2 }; var distinctTwoDPointList = twoDPointList.Distinct(); foreach (var point in distinctTwoDPointList) { Console.WriteLine("Distinct point: {0}", point); } // одна уникальная точка Console.WriteLine("TwoDPointWithHash:"); var twoDPointWithHashList = new List <TwoDPointWithHash> { newPoint1, newPoint2 }; var distinctTwoDPointWithHashList = twoDPointWithHashList.Distinct(); foreach (var point in distinctTwoDPointWithHashList) { Console.WriteLine("Distinct point: {0}", point); } }