码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2015-05-14 23:30:35      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

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型

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

标签:

原文地址:http://www.cnblogs.com/wt1990/p/4504656.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!