可以将子对象分配给基础。
base1 b1 = new child1();
但是如果我们对集合做同样的事情是不可能的,为什么?
List<base1> libase = new List<child1>();
任何包含此解释的引用资料都非常有帮助,请分享
public class base1
{
}
public class child1 : base1
{
}
static void Main(string[] args)
{
base1 b1 = new child1();
List<base1> libase = new List<child1>();
Console.Read();
}
最佳答案
在 C# 中你可以做到这样的技巧:
List<base1> libase = new List<base1>(new List<child1>());
此外,您还可以使用 IEnumerable 接口(interface):
IEnumerable<base1> libase = new List<child1>();
因为它声明为:
public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
out T
这是最重要的。
当列表只是:
public class List<T>
{}
关于您的问题,请在此处阅读更多内容 Covariance and Contravariance in Generics
关于java - 将子对象分配给基础是可能的,但如果对集合执行相同的操作,则不可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44178934/