自定義隱式轉換 public static implicit operator 和顯式轉換
阿新 • • 發佈:2019-02-16
例子:對使用者user中,使用者名稱first name和last name進行轉換成合成一個限定長度為10個字元新name。
自定義隱式轉換:
namespace transduction { public partial class transductionForm : Form { public transductionForm() { InitializeComponent(); } private void btnDisplay_Click(object sender, EventArgs e) { User user = new User() { FirstName = textBox1.Text, LastName = textBox2.Text }; LimitedName limitedName = user;//將user轉換為limitedName string lName = limitedName;//將limitedName轉換為字串型 listBox1.Items.Add(lName); } } class LimitedName { const int MaxNameLength = 10;//名字最長為10個字元 private string _name; public string Name { get { return _name; } set { _name = value.Length < 10 ? value : value.Substring(0, 10); } } public static implicit operator LimitedName(User user)// public static implicit operator是必須的,名稱LimitedName為目標型別,引數User為源資料。 { LimitedName ln = new LimitedName();//建立目標例項 ln.Name = user.FirstName + user.LastName;//將源資料賦於目標例項 return ln; } public static implicit operator string(LimitedName ln)// { return ln.Name;//返回目標例項的資料。 } } class User { public string FirstName { get; set; } public string LastName { get; set; } } }
自定義顯式轉換:
將上面程式中的用explicit替換implicit,
LimitedName limitedName =(LimitedName ) user;//在user增加顯式轉換型別