C#IEnumerable和IList的区别

时间:2017-02-18 09:09:49

标签: c#

    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;
    }

当我运行上面的代码时,我在结果类型中没有看到任何不同的结果 IEnumerableIList。使用它们有什么不同吗?如何决定使用哪种类型?

1 个答案:

答案 0 :(得分:1)

IList继承自IEnummerable,因此它们基本相同,只是IList具有额外的功能。

这取决于您创建的数据是否应该使用IEnummerable或IList。

如果您只想将集合内容作为readonly进行迭代,那么

IEnumerable是很好的。

IList允许添加和删除内容(ICollection也是如此)并允许直接访问带索引的元素