gpt4 book ai didi

c# - 如何将派生类型列表分配给 C# 中的基类型列表?

转载 作者:行者123 更新时间:2023-11-30 13:57:34 24 4
gpt4 key购买 nike

如何实现List<Employee> e = new List<Associate>() ?这是错误的吗?

class Employee
{
public int ID { get; set; }
public string Name { get; set; }
}

class Associate : Employee
{
}

class Compute
{
static void Main()
{
List<Employee> e = new List<Associate>();
}
}

最佳答案

假设您有另一个继承自 Employee 的类还有,比如说,

class Manager : Employee
{
}

然后,在您的示例中,这可能会发生,

class Compute
{
static void Main()
{
List<Employee> employees = new List<Associate>();
employees.Add(new Manager()); // Hmmm... what?
}
}

突然间你有了一个 ManagerAssociate 的列表中,这违反了类型规则,因为 ManagerAssociate没有类(Class)关系。这就是为什么 List<T> 的部分原因已声明T类型参数为不变(而不是 List<out T> 或协变,这样的事情实际上可能发生)。

关于c# - 如何将派生类型列表分配给 C# 中的基类型列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com