重载运算符

运算符



感觉有的大可不必使用

public static Pet operator ++(Pet pet)
{
++pet.age;
return pet;
}
重载运算符

重载运算符

1、什么是重载运算符
不能创造新的运算符,所以利用现有的某种运算符,针对自定义类或者结构(预定义类型和现有运算符的运算含义是确定的所有不能更改),定义某种运算符(该运算符和该操作具有一定相关性,如公狗狗+母狗狗=新生狗狗),从而简化自定义类型的操作。
为什么需要重载运算符:利用现有运算符,简化自定义类型的操作。最好是,该运算符和该操作,具有一定亿相关性。
2、语法细节
public static Dog operator +(Dog male,Dog female)//如公狗狗+母狗狗=新生狗狗
{
···
}
3、哪些运算符可以重载
一元运算符:+、-、!、~、++、- -、true、false(操作数必须是类和结构)
二元运算符:+、-、*、%、&、|!、^、<<、>>、= =、!=、>、<、>=、<=(两个操作数至少有一个表示类或者结构)
不能重载:=、&&、||、[](索引操作)、()等
4、重载运算符不能做什么
创造新运算符
改变运算符语法
重定义运算符如何处理预定义类型
改变运算符的优先级和结合性
5、重在运算符举例
···
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();
重载运算符,利用现有的运算符,针对自定义类或者结构,定义某种运算操作。为了简化自定义类型的操作。
可以重载的运算符;一元运算符,二元运算符
不能重载的运算符:关系运算符
一元运算符,操作数必须是类或结构
二元运算符;两个操作数至少有一个类或结构


重载运算符
为什么要重载运算符
什么是重载运算符
重载运算符
为什么要重载运算符
什么是重载运算符
重载运算符:
利用现有的某种运算符,针对自定义类或者结构,定义某种运算操作。
为什么要重载运算符:
利用现有运算符,简化自定义类型的操作。最好是,该运算符和该操作,具有一定以相关性。
语法:
public static Dog operator+(Dog male,Dog female)
{
....
return new Dog();
}
说明:Dog为返回值,重载加法(+)运算符。
重载运算符不能做什么:
1)创造新运算符
2)改变运算符语法
3)重定义运算符如何处理预定义类型(如:+等于-)
4)改变运算符的优先级和结合性
重载运算符
什么是重载运算符:利用现有的某种运算符(不能创造新的运算符),针对自定义(预定义类型和现有运算符的运算含义是确定的)类或者结构,定义某种运算操作(公狗狗+母狗狗=新生狗狗)。
为什么需要重载运算符:利用现有运算符,简化自定义类型的操作。最好是,该运算符和该操作,具有一定亿相关性。

哪些运算符可以重载:
一元运算符:+,-,!,~,++,--,true,false;(操作数必须是类或结构)
二元运算符:+,-,*,/,%,&,|!,^,<<,>>,==,!=,>,<,>=,<=(两个操作数至少有一个是类或结构)
不能重载:=,&&,||,[],()等等
重载运算符不能做什么:
1、创造新运算符;
2、改变运算符语法;
3、重定义运算符如何处理预定义类型(int a+int b等于a-b);
4、改变运算符的优先级和结合性。
重载运算符不能做什么:
1)创造新运算符
2)改变运算符语法
3)重定义运算符如何处理预定义类型(如:+等于-)
4)改变运算符的优先级和结合性
哪些运算符可以重载:
一元运算符:+、-、!、~、++、--、true、false
注:操作数必须是类或结构
二元运算符:+、-、*、/、%、&、|!、^、<<、>>、==、!=、>、<、>=、<=
注:两个操作数至少有一个是类或结构
不能重载:=、&&、||、[](索引操作符)、()等等
重载运算符:
利用现有的某种运算符,针对自定义类或者结构,定义某种运算操作。
为什么要重载运算符:
利用现有运算符,简化自定义类型的操作。最好是,该运算符和该操作,具有一定以相关性。
语法:
public static Dog operator+(Dog male,Dog female)
{
....
return new Dog();
}
说明:Dog为返回值,重载加法(+)运算符。
重载运算符:利用现有的某种运算符,针对自定义类或者结构,定义某种运算,以简化自定义类型的操作。
public static Dog operator+(Dog male,Dog female)
{
...
return new Dog();
}
可以重载的运算符:
1、一元:+,-,!,~,++,--,true,false;
操作数必须是类或结构;
2、二元:+,-,*,/,%。&,|!,^,<<,>>,==,!=,>,<,>=,<=;
两个操作数至少有一个是类或结构;
3、不能重载:=,&&,||,[],()等。
重载运算符不能:
1、创建新运算符;
2、改变运算符语法;
3、重定义运算符如何处理预定义类型;( int a + int b = a - b)
4、改变运算符的优先级和结核性。
重载运算符
重载运算符:
利用C#中的某种运算符,针对自定义类或者结构,定义某种运算操作
预定义类型和现有运算符的运算含义是确定的,意思就是不能通过重载运算符把加法含义改为乘法含义或其它的含义
利用现有的运算符,简化自定义类型的操作,最好是该运算符和该操作,具有一定以相关性
语法细节:
Pet是一个类
public static Pet operator++(Pet pet)
{
pet.age++;
return pet;
}
重载运算符是一元运算符时一元运算符的操作数必须是类或结构
是二元运算符时两个操作数至少有一个是类或结构
这节课不太懂
重载运算符,不可改变运算原有规则,如加变减,其实是可以用方法完成所要的运算功能,只是利用已有的运算符规则,简化过程直接使用重载的运算符;
除=,&&,||,[ ]索引,( )的运算符都可以重载,一元运算符必须操作对象是类或结构,二元至少有一个是类或结构,在(实例化后)类或结构直接使用重载运算符,如A++;
public static 返回值类型 operator 运算符 (B b){}
重载运算符:利用现有的某种运算符,针对自定义类或者结构,定义某种运算操作。
原因:利用现有运算符,简化自定义类型的操作。最好是,该运算符和该操作,具有一定以相关性。
语法细节:
public static Dog(返回值) operator +(Dog male,Dog female)
{
……
return new Dog();
}
重载运算符不能做:
创造新运算符
改变运算符语法
重定义运算符如何处理预定义类型
改变运算符的优先级和结合性
重载运算符2
重载运算符1
不能重载的运算符
:=,&&,||,[],()
重载运算符