微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是c#中的IEnumerable接口?如果我们不使用它怎么办?

在互联网上搜索C#中的IEnumerable接口是什么?它解决的问题是什么?如果我们不使用它怎么办?但从来没有真正得到太多.很多帖子都解释了如何实现它.

我还发现了以下示例

List<string> List = new List<string>();
        List.Add("Sourav");
        List.Add("Ram");
        List.Add("Sachin");


        IEnumerable names = from n in List where (n.StartsWith("S")) select n;
        // var names = from n in List where (n.StartsWith("S")) select n;

        foreach (string name in names)
        {
            Console.WriteLine(name);
        }

上述输出

Sourav

Sachin

我想知道,在上面的例子中使用IEnumerable的优势是什么?我可以使用’var'(注释行)来实现相同的功能.

如果你们中的任何人能够帮助我理解这一点并且使用IEnumerable的例子有什么好处,我将不胜感激?如果我们不使用它怎么办?

解决方法

除了阅读 documentation之外,我还描述了IEnumerable< T>作为Ts的集合,它可以被迭代并且可以执行许多其他函数(例如Where(),Any()和Count())但是它不是为添加删除元素而设计的.那是List< T>.

它很有用,因为它是许多集合的基本接口,各种数据访问层和ORM使用它,并且自动包含许多扩展方法.

Lists,Arrays,Bags,Queues,Stacks的许多具体实现都实现了它,允许各种各样的集合使用它的扩展方法.

实现IEnumerable或IEnumerable的集合也可以在foreach循环中使用.

msdn开始

for each element in an array or an object collection that implements
the System.Collections.IEnumerable or
System.Collections.Generic.IEnumerable interface.

在你的代码示例中,你有一个名为names的变量,它将是一个IEnumerable< string>,了解它将是一个IEnumerable< string>是很重要的.无论您是否使用var关键字. var只允许您每次都明确地避免写入类型.

TLDR

它是许多不同类型集合的通用基础接口,允许您在foreach循环中使用您的集合,并免费提供许多额外的扩展方法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐