程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 轉換操作符方法(非基元類型轉換),操作符

轉換操作符方法(非基元類型轉換),操作符

編輯:C#入門知識

轉換操作符方法(非基元類型轉換),操作符


當源類型與目標類型不是基元類型時CLR便不能自己進行編譯轉換。

下例為Rational(有理數類型)與string,int的轉化。

轉換操作符是將對象從一個類型轉化成另一個類型的方法。可以使用特殊語法來定義裝換操作符方法。

CLR要求轉換操作符的重載方法必須是public 和static方法。c#要求參數類型和返回類型二者必有其一與定義轉換方法的類型相同。

//定義只有一個參數的公共構造器,這個參數時源類型的一個實例
//定義無參數的公共實例方法ToXxx(l類似於ToSting)
//每個方法都將定義該方法的類型的一個實例裝化為Xxx類型
public sealed class Rational
{
    //由一個int構造一個Rational
    public Rational(int num) { }
    //由int隱式構造並返回一個Rational
    public static implicit operator Rational(int num) { return new Rational(num); }
    
   //由一個single構造一個Rational
    public Rational(Single s) { }
    //由Single隱式構造並返回一個Rational
    public static implicit operator Rational(Single num) { return new Rational(num); }
    //將Rational轉化成一個int
    public Int32 ToInt32() { return new Int32(); }
    //由一個Rational顯示返回一個Int32
    public static explicit operator Int32(Rational r) { return r.ToInt32(); }
    //將Rational轉化成一個Single
    public Single ToSingle() { return new Single(); }
    //由一個Rational顯示返回一個Single
    public static explicit operator Single(Rational r) { return r.ToSingle(); }

}

  

namespace 類型構造器
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5;
            Single b=8;
            Rational rint = new Rational(a);
            Rational bsigle = new Rational(b);
            Rational r1 = 5;//int隱式轉化為rational;
            Rational r2 = 3.14f;//single隱式轉化為Rational
            Rational r3 = 4;
            Rational r4 = 6;
            Console.WriteLine(rint.GetType());//輸出為Rational
            Console.WriteLine(bsigle.GetType());//輸出為Rational
            Console.WriteLine(r3.ToInt32().GetType());//輸出為System.Int32
            Console.WriteLine(r4.ToSingle().GetType());//輸出為System.Single
            Console.ReadKey();
        }
    }
}

 c#中implicit關鍵字告訴編譯器為了生成代碼來調用方法,不需要在源代碼中進行顯式轉型,相反explicit告訴編譯器只有在發現了顯式轉型時才調用方法。

implicit和explicit關鍵字之後指定operator關鍵字告訴編譯器該方法時一個轉換操作符。在operator之後,指定對象要裝換成什麼類型,圓括號裡指定要從什麼類型裝換。 

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