我是编程新手。我在理解下面的代码时遇到问题。
很抱歉,如果这是一个愚蠢的问题,但如果有人违反以下代码我真的很感激。
private IEnumerable<Customer> GetCustomers()
{
return new List<Customer>
{
new Customer { Id = 1, Name = "John Smith" },
new Customer { Id = 2, Name = "Mary Williams" }
};
答案 0 :(得分:2)
- 我们在这里使用
醇>IEnumerable
的具体原因是什么?
不知道。问一个写它的人。使用接口的一个原因是隐藏实现细节。消费者不必知道它是列表,数组或其他任何东西。有些人将其用作安全机制&#39;所以你不能插入物品,但显然物体可以被铸造,而不是真正的解决方案。
- 醇>
return new List {}
- 这是一种匿名方法吗?
不,它是一个带有两个对象初始值设定项的集合初始值设定项
- 为什么我们不能将列表用作返回类型而不是
醇>IEnumerable
?
你可以。
答案 1 :(得分:0)
Q值。我们在这里使用IEnumerable的具体原因是什么?
当你的函数返回List时,它将被转换为IEnumerable,在这种情况下使用IEnumerable是: a)您的函数将返回只读列表。您无法在返回的集合中添加或删除任何内容。 b)IEnumerable是所有可迭代集合实现的接口。所以基本上List返回Ienumerable的类型,这是多态的一个例子。如果集合对象正在实现它,您总是可以返回IEnumerable。
Q值。 return new List {} - 这是一个匿名方法吗?
没有。这不是匿名方法。这是初始化集合对象并在其中添加值的样式之一。
Q值。为什么我们不能使用list作为返回类型而不是IEnumerable?
您可以使用List作为返回类型,但在这种情况下,使用此方法的客户端将有一个选项来添加/删除正在返回的客户。在IEnumerable的情况下,该集合将是只读的。