那个章节的?这个章节中老师那里没发现这个语句啊
看一下报错提示,一般都能看到原因
public static“ explicit” operator Cat(Dog dog)
1,肯定不能调用了啊,转换完得到的cat已经不是dog了,这个问题其实可以类比值类型,比如:double d=4.3;
int i=(int)d;然后i会得到3,但是i不能当做d用?
类转换接口时,是因为该类继承了该接口,所以可以调用已经实现了的接口方法。
而自定义转换是要两个派生类之间的转换,是无法调用对方的重写的方法。如果是基类的话是可以直接将派生类强制转换来调用派生类的方法的
对的。
若在类Dog.cs中写下
public static implicit operator Cat(Dog dog) { return new Cat(dog._name); }
则在static void Main(string[] args)中可用
Dog d1 = new Dog("Tom"); Cat c1 = d1;
实现狗到猫的隐式类型转换。
若在类Cat.cs中写下
public static explicit operator Dog(Cat cat) { return new Dog(cat._name); }
则在static void Main(string[] args)中可用
Cat c2 = new Cat("Bob"); Dog d2 = (Dog)c2;
实现猫到狗的显示转换。