c#运算符重载

注意点:c#要求所有的运算符重载都声明为public和static ,表示他们与他们的类或者结构相关,而不是与实力相关,所以运算符重载的代码体不能访问非静态类成员,也不能访问this标识符

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 运算符重载
{
    class Vector
    {
        public int x;
        public int y;
        public int z;
        public Vector(int x, int y, int z)
        {
            this.x = x;
            this.y = y;
            this.z = z;
        }

        public static Vector operator+(Vector v1,Vector v2)
        {                               
            return new Vector(v1.x + v2.x,v1.y + v2.y,v1.z + v2.z);
        }

        public static Vector operator -(Vector v1, Vector v2)
        {
            return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);
        }

        public static Vector operator *(Vector v1, Vector v2)
        {
            return new Vector(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z);
        }

        public static Vector operator /(Vector v1, Vector v2)
        {
            return new Vector(v1.x / v2.x, v1.y / v2.y, v1.z / v2.z);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Vector v1 = new Vector(1,2,3);
            Vector v2 = new Vector(5,6,7);
            Vector v3 = v1 + v2;
            Vector v4 = v1 * v2;
            Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v3.x, v3.y, v3.z);
            Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v4.x, v4.y, v4.z);
            Console.ReadLine();
        }
    }
}

 

posted @ 2012-05-22 22:03  sidihu  阅读(271)  评论(0编辑  收藏  举报