static void RunTests_Class() { Console.WriteLine("---------Reference-------------"); Stopwatch w = new Stopwatch(); var v1 = new cVector(1, 1); var v2 = new cVector(2, 2); w.Start(); // sVector v3 = Add(v1,v2); var v3 = v1 + v2; w.Stop(); Console.WriteLine($"Time elapsed = {w.ElapsedTicks} ticks"); Console.WriteLine($"{v1} + {v2} = {v3}"); // copy by reference, same object var v4 = v3; Console.WriteLine($"v3 & v4 are same: {Object.ReferenceEquals(v3,v4)}"); v4.X = 5; Console.WriteLine($"Modified v4. {v3} == {v4}"); // hash codes - dictionary - maybe internally for gc Console.WriteLine($"Hashcodes : v1:{v1.GetHashCode()}, v2: {v2.GetHashCode()}," + $"v3:{v3.GetHashCode()}, v4: {v4.GetHashCode()}"); }
public int CompareTo(object obj) { if (obj == null) { return(1); } cVector v2 = obj as cVector; if (v2 != null) { return(this.Magnitude.CompareTo(v2.Magnitude)); } else { throw new ArgumentException("Object is not a cVector"); } }