您的位置:首页 > 编程语言 > C#

c#语法基础(2)——运算符重载

2015-05-14 22:22 232 查看
c#允许用户定义的类型,通过使用operator关键字定义静态成员函数来重载运算符

下面来看一个例子:

public class ComplexNumber
{
private int real;
private int imaginary;
//构造器
public ComplexNumber(int r, int i)
{
real = r;
imaginary = i;
}
//重载ToString方法,用来显示ComplexNumber
public override string ToString()
{
if (imaginary >= 0)
return (System.String.Format("{0}+{1}i", real, imaginary));
else
return (System.String.Format("{0}-{1}i", real, imaginary));
}
}


我们需要+、-实现两个虚数相加或相减,使用下面的方法重载+、-运算符

//重载+运算符
public static ComplexNumber operator+(ComplexNumber lhs,ComplexNumber rhs)
{
return new ComplexNumber(
lhs.real+rhs.real,lhs.imaginary+rhs.imaginary);
}
//重载-运算符
public static ComplexNumber operator-(ComplexNumber lhs,ComplexNumber rhs)
{
return new ComplexNumber(
lhs.real-rhs.real,lhs.imaginary-rhs.imaginary);
}


运算符重载的声明方式和方法的声明方式相同,但operator关键字告诉编译器它实际上是运算符重载。

本例中

public static ComplexNumber operator+(ComplexNumber lhs,ComplexNumber rhs)

表示的重载运算符“+”是全局静态的返回值是ComplexNumber类型,输入参数为两个ComplexNumber型变量,返回值仍为ComplexNumber型,

返回的操作是调用ComplexNumber类中的构造器和ToString方法。

public static implicit operator ComplexNumber (double d)

其中implicit表示隐形类型转换,将d由double型转换成ComplexNumber型。

public double D (get;set;)

是一种强制类型转换形式,意思是强制转换成double型


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: