本次主要學習了一下C#中自定義類型的轉換,一些轉換c#默認是不能夠轉換的,所以這個時候就需要用戶自己來定義需要轉換的方式,也就是自定義的類型轉換方式,用戶自定義類型轉換這里實現了兩種,一種是顯式的轉換,一種是隱式的轉換,再就是操作符的重載了。
涉及到的關鍵字主要有:implicit(隱式),explicit(顯式),operator(操作符),在代碼中我們還要注意另一些關鍵字,如static哪里
下面是代碼部分:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OperatorClass { class Program { static void Main(string[] args) { Console.WriteLine("隱式轉換:"); int testInt; //隱式轉換 TransformTypeInt test = new TransformTypeInt(); //1. test = -200; Console.WriteLine(test.SourceInt); //2. test = 300; testInt = test; Console.WriteLine(testInt); Console.WriteLine(); Console.WriteLine("顯式轉換:"); //顯式轉換 string testStr; ExplicitTrans str = new ExplicitTrans(); //str = "HelloWorld"; str = (ExplicitTrans)"HelloWorld"; Console.WriteLine(str.SourceStr); testStr =(string)str; Console.WriteLine(testStr); Console.WriteLine(); Console.WriteLine("操作符重寫:"); TransformTypeInt var1 = new TransformTypeInt(); TransformTypeInt var2 = new TransformTypeInt(); TransformTypeInt var = new TransformTypeInt(); var1 = 63; var2 = 78; var = var1 + var2; Console.WriteLine(var.SourceInt); Console.ReadKey(); } } /// <summary> /// 隱式轉換類 /// </summary> //從一種類型轉換到另一種類型 class TransformTypeInt { private int sourceInt=0; public int SourceInt { get { //返回一個大於零的數 return sourceInt > 0 ? sourceInt :0; } set { sourceInt = value; } } /// <summary> /// 隱式的轉換 /// </summary> /// <param name="source"></param> //隱式轉換,將TransformTypeInt轉為int public static implicit operator int(TransformTypeInt source) { return source.SourceInt; } //隱式轉換,將int轉換為TransformTypeInt; public static implicit operator TransformTypeInt(int source) { TransformTypeInt tar = new TransformTypeInt(); tar.SourceInt = source; return tar; } /// <summary> /// 重寫+操作符,實現兩個值追加,注意這里的static,public operator /// </summary> /// <param name="var1"></param> /// <param name="var2"></param> /// <returns></returns> public static TransformTypeInt operator +(TransformTypeInt var1,TransformTypeInt var2) { TransformTypeInt tar = new TransformTypeInt(); string a = var1.SourceInt.ToString() + var2.SourceInt.ToString(); tar.SourceInt = Convert.ToInt32(a); return tar; } } /// <summary> /// 顯式轉換 /// </summary> class ExplicitTrans { string sourceStr; public string SourceStr { set { sourceStr = value; } get { return sourceStr; } } public static explicit operator string(ExplicitTrans source) { return source.SourceStr; } public static explicit operator ExplicitTrans(string source) { ExplicitTrans tar = new ExplicitTrans(); tar.SourceStr = source; return tar; } } }
程序的執行結果附上一張經典的控制台截圖(^-^)V

