首页 > 其他分享 >IEnumerable、IEnumerator

IEnumerable、IEnumerator

时间:2024-09-28 21:12:01浏览次数:7  
标签:return IEnumerable yield item IEnumerator public

示例1:

    class E
    {
        public IEnumerable MyGetEnumerator1()
        {
            yield return 1;
        }
        public IEnumerable<int> MyGetEnumerator2()
        {
            yield return 1;
            yield return 2;
        }
        public IEnumerator MyGetEnumerator3()
        {
            yield return 1;
            yield return 2;
            yield return 3;
        }
        public IEnumerator<int> MyGetEnumerator4()
        {
            yield return 1;
            yield return 2;
            yield return 3;
            yield return 4;
        }      
        public IEnumerator GetEnumerator()
        {
            yield return 1;
            yield return 2;
            yield return 3;
            yield return 4;
        }
    }


E e = new E();
foreach (var item in e.MyGetEnumerator1())            
    Console.WriteLine(item);

foreach (var item in e.MyGetEnumerator2())
    Console.WriteLine(item);

//报错:foreach statement cannot operate on variables of type 'IEnumerator' because 'IEnumerator' does not contain a public instance or extension definition for 'GetEnumerator'
foreach (var item in e.MyGetEnumerator3())  
    Console.WriteLine(item);

//报错:同上
foreach (var item in e.MyGetEnumerator4())  
    Console.WriteLine(item);

//当GetEnumerator()的返回类型为IEnumerator或IEnumerator<int>时都能正常运行,当为IEnumerable或IEnumerable<int>时,则报错:1、'IEnumerable' does not contain a definition for 'Current',2、foreach requires that the return type 'IEnumerable' of 'E.GetEnumerator()' must have a suitable public 'MoveNext' method and public 'Current' property
foreach (var item in e)  
     Console.WriteLine(item);

 

标签:return,IEnumerable,yield,item,IEnumerator,public
From: https://www.cnblogs.com/sound-of-wind-rain/p/18438418

相关文章

  • 【C#】LINQ操作实现 IEnumerable<T> 接口的集合
    IEnumerable<TSource> 接口详解IEnumerable<TSource> IEnumerable<TSource>是C#中的一个泛型接口,它定义了如何遍历一组对象。这个接口是.NETFramework中LINQ(LanguageIntegratedQuery)的基础之一,用于提供一种统一的方式来访问不同类型的集合。IEnumerable<TSource>......
  • C# :IQueryable & IEnumerable
    1.IEnumerablenamespaceSystem.Collections:publicinterfaceIEnumerable{publicIEnumeratorGetEnumerator();}publicinterfaceIEnumerator{pubilcobjectCurrent{get;}publicboolMoveNext();publicvoidReset();}IEnumerable......
  • IEnumerator Start
    privateIEnumeratorStart(){ProcedureBase[]procedures=newProcedureBase[m_AvailableProcedureTypeNames.Length];for(inti=0;i<m_AvailableProcedureTypeNames.Length;i++){Typeproced......
  • unity协程(IEnumerator)开始和结束
    仅用于记录遇到的问题和解决方案。快速阅览:一、结束协程无效:协程方法需要单独存一份privateIEnumeratormyTest,再开始和结束不直接传入方法名,而是使用这份保存的myTest进行开始和结束。二、再次开启协程时少跑了几行代码:再次开始同一个方法名的协程时,不是从第一句代码开始执行......
  • 关于linq Where中的”或者“运算只查询出来满足一种条件的数据的问题,本质是IEnumerabl
    如下代码所示,其中的"query"返回值类型为IQuerablevarquery=_deviceRepository.GetAll().AsNoTracking().Where(a=>a.status=1);if(ture){query=query.Where(a=>(a.name=="a"&&a.sex=1)||a.name=="b");......
  • IQueryable 和 IEnumerable
         ......
  • IEnumerable 和 IEnumerator
    什么是IEnumerable?这是一个由可枚举类实现的接口。整个集合在c#可以实现IEnumerable接口。它返回IEnumerator。它不会根据代码中使用的访问说明符而更改。IEnumerable有一个称为GetEnumerator的方法。此实现仅在类内部完成。迭代过程使得在集合中遍历变得更容易。......
  • IEnumerable、IEnumerator、IColle…
    初学C#的时候,老是被IEnumerable、IEnumerator、ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质。下面我们先看IEnumerable......
  • Unity-C# 协程 IEnumerator 用法梳理
    引用协程为了使用协程,必须在文件头部引入:usingSystem.Collections;启动协程使用StartCoroutine(IEnumerator)来启动一个协程停止协程使用StartCoroutine(IEnumer......
  • 快读《ASP.NET Core技术内幕与项目实战》EFCore2.5:集合查询原理揭秘(IQueryable和IEnum
    本节内容,涉及4.6(P116-P130)。主要NuGet包:如前述章节 一、LINQ和EFCore的集合查询扩展方法的区别1、LINQ和EFCore中的集合查询扩展方法,虽然命名和使用完全一样,都两者定义......