C#的类型转换

来源:互联网 发布:2016网络在逃犯名单 编辑:程序博客网 时间:2024/05/29 02:57

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