C#自界說類型強迫轉換實例剖析。本站提示廣大學習愛好者:(C#自界說類型強迫轉換實例剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C#自界說類型強迫轉換實例剖析正文
本文實例講述了C#自界說類型強迫轉換的用法。分享給年夜家供年夜家參考。詳細剖析以下:
先來舉一個小例子
類界說:
public class MyCurrency { public uint Dollars; public ushort Cents; public MyCurrency(uint dollars, ushort cents) { this.Dollars = dollars; this.Cents = cents; } public override string ToString() { return string.Format( "${0}.{1}", Dollars, Cents ); } //供給MyCurrency到float的隱式轉換 public static implicit operator float(MyCurrency value) { return value.Dollars + (value.Cents / 100.0f); } //把float轉換為MyCurrency,不克不及包管轉換確定勝利,由於float可以 //存儲負值,而MyCurrency只能存儲負數 //float存儲的數目級比uint年夜的多,假如float包括一個比unit年夜的值, //將會獲得意想不到的成果,所以必需界說為顯式轉換 //float到MyCurrency的顯示轉換 public static explicit operator MyCurrency(float value) { //checked必需加在此處,加在挪用函數裡面是不會報錯的, //由於溢出的異常是在強迫轉換運算符的代碼中產生的 //Convert.ToUInt16是為了避免喪失精度 //該段內容很主要,具體參考"C#高等編程(中文第七版) 218頁解釋" checked { uint dollars = (uint)value; ushort cents = Convert.ToUInt16((value - dollars) * 100); return new MyCurrency(dollars, cents); } } }
測試代碼:
private void btn_測試自界說類型強迫轉換_Click(object sender, EventArgs e) { MyCurrency tmp = new MyCurrency(10, 20); //挪用MyCurrency到float的隱式轉換 float fTmp = tmp; MessageBox.Show(fTmp.ToString()); float fTmp2 = 200.30f; //挪用float到MyCurrency的顯示轉換 MyCurrency tmp2 = (MyCurrency)fTmp2; MessageBox.Show(tmp2.ToString()); }
願望本文所述對年夜家的C#法式設計有所贊助。