程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 總體了解C#(10.操作符重載)

總體了解C#(10.操作符重載)

編輯:C#入門知識

10.操作符重載

利用操作符重載機制,程序員可以創建讓人感覺自然的好似簡單類型(如int、long等等)的類。C#實現了一個C++操作符重載的限制版,它可以使諸如這樣的精辟的例子—復數類操作符重載表現良好。

在C#中,操作符==是對象類的非虛的(操作符不可以為虛的)方法,它是按引用比較的。當你構建一個類時,你可以定義你自己的==操作符。如果你在集合中使用你的類,你應該實現IComparable接口。這個接口有一個叫CompareTo(object)方法,如果“this”大於、小於或等於這個object,它應該相應返回正數、負數或0。如果你希望用戶能夠用優雅的語法使用你的類,你可以選擇定義<、<=、>=、>方法。數值類型(int、long等等)實現了IComparable接口。

下面是一個如何處理等於和比較操作的簡單例子:

public class Score : IComparable

{

int value;

public Score (int score)

{

value = score;

}

public static bool operator == (Score x, Score y)

{

return x.value == y.value;

}

public static bool operator != (Score x, Score y)

{

return x.value != y.value;

}

public int CompareTo (object o)

{

return value - ((Score)o).value;

}

}

Score a = new Score (5);

Score b = new Score (5);

Object c = a;

Object d = b;

按引用比較a和b:

System.Console.WriteLine ((object)a == (object)b; // 結果為false

【譯注:上句代碼應該為:System.Console.WriteLine ((object)a == (object)b); // 結果為false】

比較a和b的值:

System.Console.WriteLine (a == b); // 結果為true

按引用比較c和d:

System.Console.WriteLine (c == d); // 結果為false

比較c和d的值:

System.Console.WriteLine (((IComparable)c).CompareTo (d) == 0); // 結果為true

你還可以向Score類添加<、<=、>=、>操作符。C#在編譯期保證邏輯上要成對出現的操作符(!=和==、>和<、>=和<=)必須一起被定義。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved