程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# - 使用operator關鍵字實現操作符重載

C# - 使用operator關鍵字實現操作符重載

編輯:C#入門知識

使用 operator 關鍵字來重載內置運算符,或提供類或結構聲明中的用戶定義轉換。
C#中,操作符都是一些靜態方法,其返回值表示操作結果,其參數是操作數.當我們為一個類創建操作符時,我們稱為"重載(OverLoad)"該操作符,與成員方法重載很像.要重載加法操作符(+),應這樣寫:
public static Fraction operator+(Fraction lhs,Fraction rhs);
將參數取名為lhs和rhs是我的習慣,參數名lhs代表"lefthand side"(左手邊),這樣可以提醒我第一參數代表操作的左邊.類似的,rhs代表"righthand side"(右手邊).
C#的操作符號重載語法是在要重載的操作符後寫上關鍵字operator.該關鍵字是一個方法修飾符.因此要重載加法操作符(+),應寫成operator+.

C#可以隱式地將int轉換long,並允許顯式地將long轉換為int.int到long是隱式轉換,因為任何int都可以適應long的內存表示.而逆操作,從long到int,必須是顯式的(要用強制轉換操作符),因為轉換可能使信息丟失:
 int myInt = 5;
 long myLong;
 myLong = myInt; //隱式
 myInt = (int) myLong; //顯式
對分數可能也需要相同的功能.對於給定的int,可以支持隱式的轉換為分數,因為整數值等於值除以1(如 15= =15/1).
對於給定分數,可以提供顯式轉換為整數,只要允許值可以取整.因此,9/4可以轉換為整數值2.
提示:關鍵字implicit用於轉換肯定成功,不會丟失信息的時候;否則就用explicit.
public static implicit operator Fraction(int theInt){
 return new Fraction(theInt);
}

public static explicit operator int(Fraction theFraction){
 return theFraction.numerator/theFraction.denominator;
}

轉換操作符號後是等於操作符(==)和不等於操作符(!=).請記住,如果實現了其中一個,必須實現另一個.
public static bool operator ==(Fraction lhs,Fraction rhs){
 Console.WriteLine("In operator ==");
    if (lhs.denominator == rhs.denominator && lhs.numerator == rhs.numerator)
  return true;
    return false;
}

public static bool operator !=(Fraction lsh,Fraction rhs){
 Console.WriteLine("In operator !=");
  return !(lhs == rhs);

 

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