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();
....
}
在我的大多数派生类中,它是一致的,但其中一个我想返回自定义类类型,这可能吗?
答案 0 :(得分:5)
简短的回答是否定的。
想一想,以后你将如何使用它?
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();
....
}
答案 1 :(得分:0)
在c#9中,是,只要新类型满足协方差规则,特别是衍生性更高的引用类型,这应该是可能的。这样就可以了。
答案 2 :(得分:-2)