【发布时间】:2022-03-04 05:35:45
【问题描述】:
private static void Main(string[] args)
{
var query = Data();
}
private static IList<Employee> Data()
{
List<Employee> list = new List<Employee>();
list.Add(new Employee { Name = "test0", Age = 19 });
list.Add(new Employee { Name = "test1", Age = 33 });
list.Add(new Employee { Name = "test2", Age = 25 });
return list;
}
private static IEnumerable<Employee> Data()
{
List<Employee> list = new List<Employee>();
list.Add(new Employee { Name = "test0", Age = 19 });
list.Add(new Employee { Name = "test1", Age = 33 });
list.Add(new Employee { Name = "test2", Age = 25 });
return list;
}
当我运行上面的代码时,我在输入结果时没有看到任何不同的结果
IEnumerable 或 IList。两者使用有什么不同吗?如何决定使用哪种类型?
【问题讨论】:
-
一般来说,最好使用最通用的类型作为输入:因此,接受
IEnumerable<T>是一个参数比接受List<T>更好。另外,IEnumerable<T>不允许被调用者更改集合,这从调用者的角度来看也很好。 -
欢迎来到 Stack Overflow。在提出这样的问题之前,您应该通过搜索已经提出的问题来进行一些研究,以查看您的问题是否已经有答案。查看Help Centre关于提问
-
看看这个link。这对这个问题有非常清楚的解释
-
一般来说,在私有方法中,出于性能原因,最好使用最具体的类型作为返回类型,在本例中为
List<Employee>。例如,它们都允许您在结果上使用foreach,但是当返回List<Employee>时,foreach将是最有效的。您还可以使用列表的所有功能,而无需强制转换。即使它没有帮助,它也没有伤害,无论如何它是一个private方法。
标签: c#