explicit 和 implicit 简单介绍

时间:2021-12-21 03:43:22

explicit implicit 的含义?

    explicit implicit 属于转换运算符,如用这两者可以让我们自定义的类型支持相互交换。     explicti 表示显式转换,如从 A -> B 必须进行强制类型转换(B = (B)A    implicit 表示隐式转换,如从 B -> A 只需直接赋值(A = B 隐式转换可以让我们的代码看上去更漂亮、更简洁易懂,所以最好多使用 implicit  运算符。不过!如果对象本身在转换时会损失一些信息(如精度),那么我们只能使用 explicit 运算符,以便在编译期就能警告客户调用eg:

class Program

    {

        static void Main(string[] args)

        {

            Audi ad = new Audi("奥迪A8");

            Car c = ad;

            Console.WriteLine("奥迪A8隐式转为大众");

 

            Car c1 = new Car("大众");

            Audi au = (Audi)c1;

            Console.WriteLine("大众显式转为奥迪A8");

        }

}

 

class Audi

    {

        string name;

        public Audi(string s)

        {

            name = s;

        }

 

        public static implicit operator  Car(Audi audi)

        {

            Car c = new Car(audi.name+"隐式转换为Car");

            return c;

        }

 }

class Car

    {

        string name;

        public Car(string Name)

        {

            name = Name;

        }

 

        public static explicit operator Audi(Car car)

        {

            return new Audi(car.name+"显式转换为Audi");

        }

}