implicit爲隱式的轉換
explicit爲顯示的轉換
通過這種方法可以有效地驗證數據, 對參數進行處理。 不管是否實用, 在此先記錄下來 以後回顧用
class 轉換關鍵字
{
class MyAge
{
private Int32 age = 0;
public Int32 Age
{
get { return age; }
set { age = value; }
}
public MyAge()
{
}
private MyAge(Int32 age)
{
this.age = age;
}
//整型到MyAge 的隱式轉換
public static implicit operator MyAge(Int32 year)
{
return new MyAge(year>1980?(year-1980):-1);
}
//MyAge 到整型的顯式轉換
public static explicit operator Int32(MyAge age)
{
if (age == null)
{
throw new ArgumentNullException("參數爲空。");
}
if ((age.Age < 0) || (age.Age > 150))
{
throw new InvalidCastException("不可能的年齡值。");
}
return age.Age;
}
//MyAge 到String類型的隱式轉換 個人理解 隱式轉換就是自動轉換
public static implicit operator String(MyAge age)
{
return "我的年齡是" + age.Age.ToString();
}
}
static void Main(string[] args)
{
MyAge age=new MyAge();
//執行顯示類型轉換: MyAge轉換爲Int32
Int32 bornAge = (Int32) age;
//執行隱式類型轉換: Int32轉換爲MyAge
age = DateTime.Now.Year;
//執行隱式轉換: MyAge轉換爲string
Console.WriteLine(age);
Console.ReadKey();
}
}