使用implicit和explicit关键字可进行隐式和显式转换,具体格式如下:
public static implicit/explicit operator targetType(sourceType name)
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
abstract class person
{
protected string _name;
public person(string name)
{
_name = name;
}
public string getname()
{
return _name;
}
public abstract void duty();
}
class student:person
{
protected int _id;
public student(string name,int id):base(name)
{
_id = id;
}
public int getid()
{
return _id;
}
public override void duty()
{
Console.WriteLine("上学");
}
//隐式转换
public static implicit operator teacher(student stu)
{
return new teacher(stu.getname(), stu.getid());
}
}
class teacher : person
{
protected int _id;
public teacher(string name, int id)
: base(name)
{
_id = id;
}
public int getid()
{
return _id;
}
public override void duty()
{
Console.WriteLine("教学");
}
//显式转换
public static explicit operator student(teacher tea)
{
return new student(tea.getname(), tea.getid());
}
}
class test
{
static void Main(string[] args)
{
student s1=new student("学生",1);
teacher t1=new teacher("老师",2);
teacher t = s1;//隐式转换
student s = (student)t1;//显式转换
Console.WriteLine(t.getname());
Console.WriteLine(s.getname());
Console.Write("输入任意字符结束程序");
Console.Read();
}
}
}