重载运算符
1、什么是重载运算符
利用现有的(不能创造新的运算符)某种运算符,针对自定义类(预定义类型和现有运算符的运算含义是确定的)或者结构,定义某种运算符(比如公狗狗+母狗狗=新生狗狗)。
2、重载运算符的原因
利用现有运算符,简化自定义类型的操作。做好是,该运算符和该操作,具有一定相关性。
3、语法细节
例如公狗狗+母狗狗=新生狗狗
public static Dog operator +(Dog male,Dog female)
{
···
}
4、那些运算符可以重载
一元运算符:+、-、!、~、++、- -、true、false(操作数必须是类和结构)
二元运算符:+、-、*、%、&、|!、^、<<、>>、= =、!=、>、<、>=、<=(两个操作数至少有一个表示类或者结构)
不能重载:=、&&、||、[](索引操作)、()等
5、重载运算符不能做什么
创造新运算符
改变运算符语法
重定义运算符如何处理预定义类型
改变运算符的优先级和结合性
6、重在运算符举例
···
public void ShowAge()
{
Console.WriteLine("Age="+_age);
}
···
//重载自增操作,针对宠物的年龄
public static Pet opertor ++(Pet pet)//返回值为Pet类型,参数为宠物自身。所有的重载方法都需要public static修饰
{
++pet._age;
return pet;
}
···
Dog dog=new Dog("Jack");
dog._age=2;
dog++;
dog.ShowAge();