加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 02:04:04 所属栏目:百科 来源:网络整理
导读:在互联网上搜索C#中的IEnumerable接口是什么?它解决的问题是什么?如果我们不使用它怎么办?但从来没有真正得到太多.很多帖子都解释了如何实现它. 我还发现了以下示例 Liststring List = new Liststring(); List.Add("Sourav"); List.Add("Ram"); List.Add(
在互联网上搜索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循环中使用您的集合,并免费提供许多额外的扩展方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读