C#.net 学习点滴

这里是在工作学习过程中碰到认为值得记录下的东西,本人水平有限。仅供自己使用。

1重载运算符

语法: public static ResultObject operator +(-|*|/|==)(ObjectClass c1,ObjectClass c2);

 

说明

ResultObject 

返回的对象。可以同ObjectClass的,也可以是Boolean的类型。

 

+(-|*|/|==|!=)

需要重载的符号,包括加、减、乘、除、==、!=

 

ObjectClass

当前类的

 

下面是具体的代码

 class Program
    {
        static void Main(string[] args)
        {
            Complex c1 = 5;
            c1.show();

            Complex c2 = c1 * 5;
            c2.show();

            Complex c3 = c1 + c2;
            c3.show();

            if (c3 != c1)
                System.Console.WriteLine("yes");
            else
                System.Console.WriteLine("no");
        }
    }

    class Complex
    {
        double x, y;
        public Complex(double x, double y)
        {
            this.x = x; this.y = y;
        }
        public static implicit operator Complex(double x)
        {
            return (new Complex(x, 1.0));
        }
        public static Complex operator +(Complex c1, Complex c2)
        {
            return (new Complex(c1.x + c2.x, c1.y + c2.y));
        }
        public static Complex operator *(Complex c, double t)
        {
            return (new Complex(c.x * t, c.y * t));
        }
        public void show()
        {
            System.Console.WriteLine("HashCode={0}, x={1}, y={2}", this.GetHashCode(), x, y);
        }
        public static bool operator ==(Complex c1, Complex c2)
        {
            return ((c1.x == c2.x) && (c1.y == c2.y));
        }
        public static bool operator !=(Complex c1, Complex c2)
        {
            return ((c1.x != c2.x) || (c1.y != c2.y));
        }
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }
    }

posted on 2012-02-27 14:46  清雅阁  阅读(116)  评论(0编辑  收藏  举报

导航