I was reading MSDN:
Code:class TwoDPoint : System.Object { public readonly int x, y; public TwoDPoint(int x, int y) //constructor { this.x = x; this.y = y; } public override bool Equals(System.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 ((System.Object)p == null) { return false; } // Return true if the fields match: return (x == p.x) && (y == p.y); } 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 override int GetHashCode() { return x ^ y; } }
Look at the bold line. How it casts ThreeDPoint class to TwoDPoint? ThreeDPoint class has three fields, while TwoDLine has two.Code:class ThreeDPoint : TwoDPoint { public readonly int z; public ThreeDPoint(int x, int y, int z) : base(x, y) { this.z = z; } public override bool Equals(System.Object obj) { // If parameter cannot be cast to ThreeDPoint return false: ThreeDPoint p = obj as ThreeDPoint; if ((object)p == null) { return false; } // Return true if the fields match: return base.Equals(obj) && z == p.z; } public bool Equals(ThreeDPoint p) { // Return true if the fields match: return base.Equals((TwoDPoint)p) && z == p.z; } public override int GetHashCode() { return base.GetHashCode() ^ z; } }



LinkBack URL
About LinkBacks



CornedBee