Operator Overloading
来源:互联网 发布:js 图片自动旋转 编辑:程序博客网 时间:2024/04/29 13:22
C#中操作符都是一些静态方法,其返回值表示操作结果,其参数是操作数. 当要为一个类创建操作符时,称之为重载(overload)该操作符,比如要重载操作符"+",应该写成:
public static Fraction operator+(Fraction lop, Fraction rop)
如果重载了==操作符,必须同时重载不等于!=.(编译器还希望重定义GetHashCode,否则会有警告). 同样<,>,<=,>=这几个操作符也必须成对定义.
隐式转换,显式转换
隐式转换不会丢失信息,而显式转换则可能导致信息的丢失,比如将long型数据转换成int型等等...
对我们自己定义的类型的数据是如何实现转换的呢?
同样分隐式转换和显式转换,当转换肯定成功且不会丢失信息时,加上前缀的关键字implicit,否则就加上关键字 explicit.
看下面的例子
上面代码中需要注意的是两个转换操作符的声明,第一个转换操作符将int转换为fraction:
public static implicit operator Fraction(int theInt)
{
Console.WriteLine("In implicit conversion to Fraction");
return new Fraction(theInt);
}
这个转换是被标记为implicit的,因为从整数到分数,只需要把分母设为1,分子设为该整数就可以转换为分数,不会造成任何截断.
第二个转换操作符用于fraction到int的显式转换:
public static explicit operator int(Fraction theFraction)
{
Console.WriteLine("In explicit conversion to int");
return theFraction.numerator /
theFraction.denominator;
}
- Operator Overloading
- Operator overloading
- Operator Overloading
- 14.2.2 Operator overloading
- C# Operator Overloading
- What is operator overloading
- Simple operator overloading
- [Operator Overloading]Set Operations
- C++.Homework. Operator overloading.01
- C++.Homework. Operator overloading.02
- CPP-operator==, <overloading
- Operator Overloading in Swift Tutorial
- C++ Overloading (Operator and Function)
- 运算符重载Operator Overloading
- 第18章:operator overloading
- thinking in c++ 读书笔记---operator overloading
- C++. Operator overloading.Fraction's operation
- C++课上ppt3复习 Operator Overloading
- Delphi中WebBrowser判断页面及JS是否加载完成
- 给新的家庭成员打个招呼
- 奇怪问题
- 测试不是为了找出所有BUG,而是为了满足用户需求
- SOCKET 异步
- Operator Overloading
- php static 使用
- 将字符串s1中任何与字符串s2匹配的字符都删掉
- %s使用
- HTTP协议及其POST与GET操作差异
- .Net平台下CLR程序载入原理分析
- 关于empty判断数组问题
- android整理的一些零散笔记
- clientHeight是个问题