我有两个引用类型之间的显式转换设置。
class Car
{
public void Foo(Car car)
{
}
public static explicit operator Bike(Car car)
{
return new Bike();
}
}
class Bike
{
}
如果我调用 Foo 并传递一个 类型Bike
,那么我必须执行显式转换。
Car myCar = new Car();
Bike bike = (Bike)myCar;
myCar.Foo(bike);//Error: Cannot convert from Bike to Car.
但是,如果我添加扩展方法,则不再需要显式转换。
public static void Foo(this Car car, Bike bike)
{
car.Foo(bike);//Success...
}
为什么扩展方法能够Bike
隐式调用 Foo 类型?