[英]C# Possible to override a return type on derived classes?
class base{
....
public string name();
....
}
class deriveda : base{
....
public override string name();
....
}
class derivedb : base{
....
public override string name();
....
}
class derivedc : base{
....
public override foo name();
....
}
在我的大多數派生類中,它是一致的,但其中一個我想返回自定義類類型,這可能嗎?
簡短的回答是否定的。
想想看,以后怎么用?
base b = new derivedc ()
進而? b.name()
的返回類型是什么? string
? foo
?
但是,您可以使用泛型來控制它(盡管我不確定它是否適合您的用例):
class base<T>{
....
public virtual T name();
....
}
class deriveda : base<string>{
....
public override string name();
....
}
class derivedb : base<string>{
....
public override string name();
....
}
class derivedc : base<foo>{
....
public override foo name();
....
}
在 c# 9 中,是的,這應該是可能的,只要新類型滿足協方差規則,特別是更派生的引用類型。 它會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.