IEnumerable代码解释?

时间:2016-06-07 10:16:00

标签: c# ienumerable

我是编程新手。我在理解下面的代码时遇到问题。

  1. 我们在这里使用IEnumerable的具体原因是什么?
  2. return new List {} - 这是一个匿名方法吗?
  3. 为什么我们不能使用list作为返回类型而不是IEnumerable?
  4. 很抱歉,如果这是一个愚蠢的问题,但如果有人违反以下代码我真的很感激。

        private IEnumerable<Customer> GetCustomers()
        {
            return new List<Customer>
            {
                new Customer { Id = 1, Name = "John Smith" },
                new Customer { Id = 2, Name = "Mary Williams" }
            };
    

2 个答案:

答案 0 :(得分:2)

  
      
  1. 我们在这里使用IEnumerable的具体原因是什么?
  2.   

不知道。问一个写它的人。使用接口的一个原因是隐藏实现细节。消费者不必知道它是列表,数组或其他任何东西。有些人将其用作安全机制&#39;所以你不能插入物品,但显然物体可以被铸造,而不是真正的解决方案。

  
      
  1. return new List {} - 这是一种匿名方法吗?
  2.   

不,它是一个带有两个对象初始值设定项的集合初始值设定项

  
      
  1. 为什么我们不能将列表用作返回类型而不是IEnumerable
  2.   

你可以。

答案 1 :(得分:0)

Q值。我们在这里使用IEnumerable的具体原因是什么?

当你的函数返回List时,它将被转换为IEnumerable,在这种情况下使用IEnumerable是: a)您的函数将返回只读列表。您无法在返回的集合中添加或删除任何内容。 b)IEnumerable是所有可迭代集合实现的接口。所以基本上List返回Ienumerable的类型,这是多态的一个例子。如果集合对象正在实现它,您总是可以返回IEnumerable。

Q值。 return new List {} - 这是一个匿名方法吗?

没有。这不是匿名方法。这是初始化集合对象并在其中添加值的样式之一。

Q值。为什么我们不能使用list作为返回类型而不是IEnumerable?

您可以使用List作为返回类型,但在这种情况下,使用此方法的客户端将有一个选项来添加/删除正在返回的客户。在IEnumerable的情况下,该集合将是只读的。