gpt4 book ai didi

c# - 方法签名中 List 和 IEnumerable 的区别

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:56 27 4
gpt4 key购买 nike

我有 2 个类:

public class Person
{
public string FirstName { get; set; }

public string LastName { get; set; }
}

public class Employee: Person
{
public string Position { get; set; }
}

我是这样使用的:

var employees = new List<Employee>
{
new Employee { FirstName = "John", LastName = "Doe", Position = "Missed"}
};

DoSomesing(employees);

如果方法 DoSomesing 的签名是:

public void DoSomesing(IEnumerable<Person> persons)

但如果方法 DoSomesing 的签名是:

public void DoSomesing(List<Person> persons)

为什么它在第一种情况下有效?

最佳答案

IEnumerable<T>covariant这意味着 IEnumerable<Employee>IEnumerable<Person> 的子类型自 EmployeePerson 的子类型.相比之下,List<T>不变所以List<Employee>不是 List<Person> 的子类型.

关于c# - 方法签名中 List<T> 和 IEnumerable<T> 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46655629/

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