C#運算子多載

來源:互聯網
上載者:User

C# 也允許您重載運算子,以供您自己的類使用。這樣做,可以使使用使用者定義的資料類型就像使用基礎資料型別 (Elementary Data Type)一樣自然、合理。例如,您可以建立一個名為 ComplexNumber 的新資料類型來表示一個複雜的數字,並提供使用標準算術運算子對此類數字執行數學運算的方法,如使用 + 運算子將兩個複雜數字相加。

若要重載某個運算子,可以編寫一個函數,在其命名運算子之後加上要重載的運算子的符號。例如,可按以下方法重載 + 運算子:

public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)

所有運算子多載均為類的靜態方法。此外還應注意,重載相等運算子 (==) 時,還必須重載不相等運算子 (!=)。< 和 > 運算子以及 <= 和 >= 運算子也必須成對重載。

以下是可重載的運算子的完整列表:

  •   一元運算子:+、-、!、~、++、--、true、false
  •   二元運算子:+, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >=, <=

下面的程式碼範例建立一個重載 + 和 - 運算子的 ComplexNumber 類:

 

代碼

public class ComplexNumber
{
private int real;
private int imaginary;

public ComplexNumber() : this(0, 0) // constructor
{
}

public ComplexNumber(int r, int i) // constructor
{
real = r;
imaginary = i;
}

// Override ToString() to display a complex number in the traditional format:
public override string ToString()
{
return(System.String.Format("{0} + {1}i", real, imaginary));
}

// Overloading '+' operator:
public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real + b.real, a.imaginary + b.imaginary);
}

// Overloading '-' operator:
public static ComplexNumber operator-(ComplexNumber a, ComplexNumber b)
{
return new ComplexNumber(a.real - b.real, a.imaginary - b.imaginary);
}
}

使用這個類,您就可以用以下代碼建立和操作兩個複雜的數字:

 

代碼

class TestComplexNumber
{
static void Main()
{
ComplexNumber a = new ComplexNumber(10, 12);
ComplexNumber b = new ComplexNumber(8, 9);

System.Console.WriteLine("Complex Number a = {0}", a.ToString());
System.Console.WriteLine("Complex Number b = {0}", b.ToString());

ComplexNumber sum = a + b;
System.Console.WriteLine("Complex Number sum = {0}", sum.ToString());

ComplexNumber difference = a - b;
System.Console.WriteLine("Complex Number difference = {0}", difference.ToString());
}
}

如程式所示,您現在可以用非常直觀的方式對屬於 ComplexNumber 類的對象使用加減運算子。結果如下:

Complex Number a = 10 + 12i

Complex Number b = 8 + 9i

Complex Number sum = 18 + 21i

Complex Number difference = 2 + 3i

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.