class Program
{
static void Main(string[] args)
{
/*
* 不管是显示还是隐式转换,一种类型都只能出现一次
*/
Console.WriteLine("************************隐式转换************************");
Parent p = new Parent("wjire", 123);
string name = p;
int id = p;
Console.WriteLine(name);//wjire
Console.WriteLine(id);//123
Console.WriteLine("************************显示转换************************");
double d = (double)p;
Parent pp = (Parent)999;
Console.WriteLine(d);//135.3
Console.WriteLine(pp.Id + ":" + pp.Name);//999:refuge
Console.ReadKey();
}
}
class Parent
{
public string Name { get; set; }
public int Id { get; set; }
public Parent(string name, int id)
{
this.Name = name;
this.Id = id;
}
public static implicit operator string(Parent p)
{
return p.Name;
}
public static implicit operator int(Parent p)
{
return p.Id;
}
public static explicit operator Parent(int id)
{
return new Parent("refuge", id);
}
public static explicit operator double(Parent p)
{
return p.Id * 1.1;
}
}