C# 如何创建一个可以返回子类或父类的函数

All*_*ang 0 c#

不知道我标题有没有说清楚。我想要的是这样的:
有一个父类:

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)

这是可以做的事情吗?
括号里应该写什么?

Dev*_*ion 6

返回不同类型的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)

阅读有关协方差和逆变的更多信息