Listing 1
using namespace System; public value class Point { int x; int y; public: // define read-write instance properties X and Y property int X { int get() { return x; } void set(int val) { x = val; } } property int Y { int get() { return y; } void set(int val) { y = val; } } // define instance constructors Point(int xor, int yor) { X = xor; Y = yor; } void Move(int xor, int yor) { X = xor; Y = yor; } virtual bool Equals(Object^ obj) override { if (obj == nullptr) { return false; } if (GetType() == obj->GetType()) { Point^ p = static_cast<Point^>(obj); return (X == p->X) && (Y == p->Y); } return false; } static bool operator==(Point p1, Point p2) { return (p1.X == p2.X) && (p1.Y == p2.Y); } // static bool operator==(Point% p1, Point% p2) // { // return (p1.X == p2.X) && (p1.Y == p2.Y); // } // static bool operator==(Point& p1, Point& p2) // { // return (p1.X == p2.X) && (p1.Y == p2.Y); // } virtual int GetHashCode() override { return X ^ (Y << 1); } virtual String^ ToString() override { return String::Concat("(", X, ",", Y, ")"); } };