wpe*_*rse 5 c# methods subclass return-value
我有一个返回类型对象的方法Bucket:
Bucket Dispense(string typeName);
Run Code Online (Sandbox Code Playgroud)
我有一个名为Widget子类的类Bucket:
public class Widget : Bucket { }
Run Code Online (Sandbox Code Playgroud)
我想做这个:
Widget w = Controller.Dispense('widget');
Run Code Online (Sandbox Code Playgroud)
鉴于a Widget是a ,我认为应该是可能的Bucket.我可以将返回类型强制转换Dispense(string)为类型Widget,但我更倾向于在没有强制转换的情况下执行此操作.有没有一种别名Bucket和Widget类型的方法?
您可以使用隐式转换运算符。这在Bucket类中定义如下:
public static implicit operator Widget(Bucket bucket)
{
// return the typecast Widget (can also perform any conversion logic here if necessary)
return (Widget)bucket;
}
Run Code Online (Sandbox Code Playgroud)
现在您可以“隐式”执行转换:
Bucket b = new Bucket();
Widget w = b;
Run Code Online (Sandbox Code Playgroud)
请注意根据 pst 的评论以及 MSDN 链接谨慎使用:
转换运算符可以是显式的或隐式的。隐式转换运算符更易于使用,但当您希望运算符的用户知道正在发生转换时,显式运算符非常有用。