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();
}
}