2017-05-28 60 views

回答

0

IEnumerable是界面,其中列表等执行 它与IList类似,但它不一样。 U知道它的一个接口,因为名称中的“I”

+0

是否有过宣称的IEnumerable ,而不是列出优势? – reincarnationofstackexchange

0

IPersonRepository是一个接口。
它的内容是函数GetPeople(),它返回IEnumerable<Person>类型的对象。
IEnumerable<>是一个通用接口,在这里用Person类的具体实现中使用。

0

IEnumerable是一个通用集合,它具有Person类型。所以你的方法GetPeople()返回一个Person对象列表。 IPersonRepository是一个接口,所以任何实现类都有一个方法GetPeople()。

使用列表示例,它实现IEnumerable:

class PersonRepository : IPersonRepository{ 
    public IEnumerable<Person> GetPeople() { 
     var people = new List<Person>(); 
     people = // Wherever you get them from. 
     return people; 
    } 
+0

谢谢,这非常有帮助。不过,我仍然对一件事感到困惑。你说“你的方法GetPeople()返回一个Person对象列表。”但是,您可以得出结论:IEnumerable 始终是人物列表?难道它也可能是另一个数据结构,可能是一个Dictionary,Stack,Queue(我还不太熟悉数据结构)?我不确定你是否意味着编程意义上的列表。 – reincarnationofstackexchange

+0

是的,它可以是堆栈,队列或链接列表。字典不匹配,因为它实现IEnumerable >。 这是从存储库返回IEnumerable 的原因之一,它允许您在别处执行任何操作,并且不会将您绑定到实现。我只是用List作为例子。 –

+0

严格地说,GetPeople()返回实现Person类型的IEnumerable接口的任何内容。我看到你在学习,所以我建议你看看如何在自己的类中实现IEnumerable,然后看看它如何与通用IEnumerable一起工作。网上有很多教程,它通常覆盖在C#的书籍中。 –

相关问题