c#語法基礎(2)——運算符重載

c#容許用戶定義的類型,經過使用operator關鍵字定義靜態成員函數來重載運算符c#

下面來看一個例子:ide

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關鍵字告訴編譯器它其實是運算符重載。spa

本例中code

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

表示的重載運算符「+」是全局靜態的返回值是ComplexNumber類型,輸入參數爲兩個ComplexNumber型變量,返回值仍爲ComplexNumber型,orm

返回的操做是調用ComplexNumber類中的構造器和ToString方法。blog

public static implicit operator ComplexNumber (double d)

其中implicit表示隱形類型轉換,將d由double型轉換成ComplexNumber型。ci

public double D (get;set;)

 是一種強制類型轉換形式,意思是強制轉換成double型get

相關文章
相關標籤/搜索