2015年11月15日 星期日

C10_2 多載算子

using System;
namespace C10_2
{
    public class Vector
    {
        public double x, y, z;
        public Vector(double vx, double vy, double vz)
        {
            x = vx;
            y = vy;
            z = vz;
        }
        public Vector(Vector rhs)
        {
            x = rhs.x;
            y = rhs.y;
            z = rhs.z;
        }
        public static Vector operator +(Vector lhs, Vector rhs)
        {
            Vector result = new Vector(lhs);
            result.x += rhs.x;
            result.y += rhs.y;
            result.z += rhs.z;
            return result;
        }
        public static bool operator ==(Vector lhs, Vector rhs)
        {
            return (lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z);
        }
        public static bool operator !=(Vector lhs, Vector rhs)
        {
            return !(lhs == rhs);
        }
        public override bool Equals(object obj)
        {
            return (this == obj as Vector);
        }
        public override int GetHashCode()
        {
            return this.ToString().GetHashCode();
        }
    }
    public class Program
    {
        public static void Main()
        {
            Vector v1, v2, v3;
            v1 = new Vector(3.0, 3.0, 1.0);
            v2 = new Vector(2.0,4.0,4.0);
            v3 = v1 + v2;
            Console.WriteLine("v3 = ({0},{1},{2}) ",v3.x,v3.y,v3.z);

            Vector v11, v22, v33;
            v11 = new Vector(3.0,3.0,1.0);
            v22 = new Vector(2.0,4.0,4.0);
            Console.WriteLine("v11==v22:return " + (v11==v22));
            Console.WriteLine("v11!=v22:return "+ (v11 != v22));
        }
    }
}

沒有留言: