C# - 使用operator关键字实现操作符重载
来源:互联网 发布:欧洲饮食文化 知乎 编辑:程序博客网 时间:2024/05/29 04:36
使用 operator 关键字来重载内置运算符,或提供类或结构声明中的用户定义转换。
C#中,操作符都是一些静态方法,其返回值表示操作结果,其参数是操作数.当我们为一个类创建操作符时,我们称为"重载(OverLoad)"该操作符,与成员方法重载很像.要重载加法操作符(+),应这样写:
public static Fraction operator+(Fraction lhs,Fraction rhs);
将参数取名为lhs和rhs是我的习惯,参数名lhs代表"lefthand side"(左手边),这样可以提醒我第一参数代表操作的左边.类似的,rhs代表"righthand side"(右手边).
C#的操作符号重载语法是在要重载的操作符后写上关键字operator.该关键字是一个方法修饰符.因此要重载加法操作符(+),应写成operator+.
C#可以隐式地将int转换long,并允许显式地将long转换为int.int到long是隐式转换,因为任何int都可以适应long的内存表示.而逆操作,从long到int,必须是显式的(要用强制转换操作符),因为转换可能使信息丢失:
int myInt = 5;
long myLong;
myLong = myInt; //隐式
myInt = (int) myLong; //显式
对分数可能也需要相同的功能.对于给定的int,可以支持隐式的转换为分数,因为整数值等于值除以1(如 15= =15/1).
对于给定分数,可以提供显式转换为整数,只要允许值可以取整.因此,9/4可以转换为整数值2.
提示:关键字implicit用于转换肯定成功,不会丢失信息的时候;否则就用explicit.
public static implicit operator Fraction(int theInt){
return new Fraction(theInt);
}
public static explicit operator int(Fraction theFraction){
return theFraction.numerator/theFraction.denominator;
}
转换操作符号后是等于操作符(==)和不等于操作符(!=).请记住,如果实现了其中一个,必须实现另一个.
public static bool operator ==(Fraction lhs,Fraction rhs){
Console.WriteLine("In operator ==");
if (lhs.denominator == rhs.denominator && lhs.numerator == rhs.numerator)
return true;
return false;
}
public static bool operator !=(Fraction lsh,Fraction rhs){
Console.WriteLine("In operator !=");
return !(lhs == rhs);
}
- C#使用operator关键字实现操作符重载
- C# - 使用operator关键字实现操作符重载
- operator关键字(重载操作符)
- C++之operator关键字(重载操作符) 使用总结
- C++ 关键字 operator 重载操作符的使用
- C# Vector定义、operator 使用c#操作符重载
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- C++ operator关键字(重载操作符)
- div 从上到下 从左到右排列
- linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享
- ubuntu下VPN链接
- Android_linux下android platforms下载地址
- zoj 3647 Gao the Grid(矩阵对角线三点共线)
- C# - 使用operator关键字实现操作符重载
- 使用V2008编译libosip和libeXosip
- Hibernate中自带ID生成策略中属性“ generator”的含义
- 【SSH学习笔记】整合spring3-hibernate的小项目(二)
- hdu 1143 数学
- 循环遍历目录
- 如何使用Amarino工具包连接Android手机和Arduino
- Apache CXF实战之七 使用Web Service传输文件
- HDU4104----Discount