不知道我标题有没有说清楚。我想要的是这样的:
有一个父类:
public class parent
....
Run Code Online (Sandbox Code Playgroud)
还有一个儿童班:
public class child : parent
....
Run Code Online (Sandbox Code Playgroud)
现在我需要一个可以返回以下任一结果的方法:
List<(what goes here?)> GetSomeValue(string id, boolean needChild) {
......
if (needChild)
return BuildChildResult(id);
else
return BuildParentResult(id);
}
Run Code Online (Sandbox Code Playgroud)
这是可以做的事情吗?
括号里应该写什么?
返回不同类型的List<T>将不起作用,因为 List 不是Covariant。
您可以通过降低对实现out通用修饰符的接口级别的响应来实现您的目标,该修饰符是IEnumerable<T>
所以在这个示例代码模型中,它应该可以工作。
private static IEnumerable<Parent> Test(bool flag) // returns a covariant collection
{
if (flag)
return new List<Parent>();
else
return new List<Child>();
}
Run Code Online (Sandbox Code Playgroud)
阅读有关协方差和逆变的更多信息
| 归档时间: |
|
| 查看次数: |
2565 次 |
| 最近记录: |