运算符的重载
/*
运算符的重载
运算必须是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();
}
}
}
可以允许重载的运算符:

浙公网安备 33010602011771号