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