运算符的重载

/*
运算符的重载
运算必须是public和static的。公共的静态实例,而不是特定的。
*/
using System;

namespace Frank
{
	public class Test
    {
        public static void Main(string[] args)
        {
			Test2 t1 = new Test2();
			t1.Count = 1;
			Test2 t2 = new Test2();
			t2.Count = 4;
			System.Console.WriteLine((t1+t2).Count);//输出5
			System.Console.WriteLine((t1-t2).Count);//输出-3
			System.Console.WriteLine((t1+6).Count);//输出7
			t2.Count = 1;
			System.Console.WriteLine(t1==t2);
        }
	}
	public class Test2
	{
		public int Count {get;set;}
		public static Test2 operator + (Test2 t1,Test2 t2)//重载+号
		{
			Test2 t = new Test2();
			t.Count = t1.Count + t2.Count;
			return t;
		}
		public static Test2 operator + (Test2 lhs,int rhs)//运算符重载与方法一样
		{
			Test2 t = new Test2();
			t.Count = lhs.Count + rhs;
			return t;
		}
		public static Test2 operator - (Test2 t1,Test2 t2)//重载-号
		{
			Test2 t = new Test2();
			t.Count = t1.Count - t2.Count;
			return t;
		}
		public static bool operator == (Test2 t1,Test2 t2)//比较运算符的重载
		{
			return t1.Count == t2.Count;
		}
		public static bool operator != (Test2 t1,Test2 t2)//比较运算符的重载
		{
			return t1.Count != t2.Count;
		}
		public override bool Equals(object t)
		{
			return this.Count == ((Test2)t).Count;
		}
		public override int GetHashCode()
		{
			return this.Count.GetHashCode();
		}
	}
}

  可以允许重载的运算符:

posted on 2013-11-27 16:55  wp456  阅读(159)  评论(0)    收藏  举报

导航