yieId



例子:在不使用yieId时,通常我们都会采取先遍历再把元素加到新的List中

            using (var reader = SqlHelper.ExecuteReader(""))
            {
                if (reader.HasRows)
                {
                    IList<Captcha> list = new List<Captcha>();
                    while (reader.Read())
                    {
                        list.Add(SqlHelper.MapEntity<Captcha>(reader));
                    }
                    return list;
                }
            }
            return null; 

接下来我们用它(yieId)来改善以上代码:

using (var reader = SqlHelper.ExecuteReader(""))
            {
                if (reader.HasRows)
                {

                    while (reader.Read())
                    {
                        yield return SqlHelper.MapEntity<Captcha>(reader);
                    }

                }
            }

这里需要注意的是在使用yieId时,返回值类型必须为IEnumerable

现在我们简单介绍下yieId,先分享一个错误的理解,注意 是错误的理解

时间: 2024-07-30 20:32:15

yieId的相关文章

JAVA线程生命周期

在大三做我的大创项目的时候,当我的服务器端开启监听客户端请求的线程时,主界面无法出来. 相信大家都知道,发生了进程抢占就会出现这种情况.但是我当时就郁闷了,明明我开了一个子线程的,为什么会和主线程发生抢占呢?经过研究,我发现我的线程启动函数用的Thread.run().当我把run改为Thread.start()后,问题就解决了.这时,让我们通过这个事情来看看线程的运行机制吧. 如上图所示,线程分为5个状态.新建,就绪,运行,死亡,阻塞. 新建:进程刚刚新建,new 就绪:线程可以运行了.sta

python-迭代器与生成器的区别

这里涉及几个知识点:迭代器.生成器.yieId 先用个例子看一下迭代器与生成器的区别吧 #L是个list,迭代用for循环即可,L取出来是存放在内存中的,再多次去循环取出都可以>>> L=[x*x for x in range(3)] >>> for i in L: print(i) 0 1 4 >>> for n in L: print(n) 0 1 4 #把[]换成了()就成了生成器,只不过它只能循环出一次,因为它不是放在内存中的.它是实时生成数据

Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public class Thread implements Runnable { /* What will be run. */ private Runnable target; ...... /** * Causes this thread to begin execution; the Java Virtu

Python列表生成式和生成器

[1]列表生成器:列表生成式就是一个用来生成列表的特定语法形式的表达式. 1.基础语句结构:[exp for iter_var in iterable例如:a=[f(x) for x in range(10)] 2.工作过程: 迭代iterable中的每个元素:每次迭代都先把结果赋值给iter_var,然后通过exp得到一个新的计算值:最后把所有通过exp得到的计算值以一个新列表的形式返回. 相当于这样的过程:L = [] for iter_var in iterable: L.append(e

可能是东半球最好的多线程讲义!

JAVA多线程 多线程的基本概念 线程指进程中的一个执行场景,也就是执行流程,那么进程和线程有什么区别呢? 每个进程是一个应用程序,都有独立的内存空间 同一个进程中的线程共享其进程中的内存和资源(共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的.) 什么是进程? 一个进程对应一个应用程序.例如:在 windows 操作系统启动 Word 就表示启动了一个 进程.在 java 的开发环境下启动 JVM,就表示启动了一个进程.现代的计算机都是支持多 进程的,在同一个操作系统中,可以同时

Java架构师之路:从Java码农到年薪八十万的架构师,最牛Java架构师进阶路线

从Java码农到年薪八十万的架构师,资深架构师大牛给予Java技术提升学习路线建议,如何成为一名资深Java架构师? 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术.转型管理和晋升架构师三种选择.架构师在一家公司有多重要.优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析 程序员如何才能晋升为优秀的高薪架构师? 希望通过本文让程序员们了解架构师的市场行情,了解架构师的发展前景,并帮助你更清晰地做出职业规划. 架构师在一家公司有多重要 架构师在公司中担当着「IT架构灵魂人物

Java编程思想之二十 并发

20.1 并发得多面性 并发编程令人困惑的一个主要原因:使用并发时需要解决的问题有多个,而实现并发的方法也有多种,并且在这两者之间没有明显的映射关系. 20.1.1 更快的执行 速度问题初听起来很简单:如果你需要一个程序运行得更快,那么可以将起断开为多个片段,在单个处理器上运行每个片段. 并发通常是提高运行在单个处理器上的程序的性能,但在单个处理器上运行的并发程序开销确实应该比该程序所有部分都顺序执行开销大,因为其中增加了所谓的上下文切换的代价. 如果没有任务会阻塞,那么在单处理器上使用并发就没

Python之函数(七)生成器与推导式

4.10 生成器 简介: 什么是生成器? 生成器的本质就是迭代器 生成器跟迭代器的区别:迭代器都是python给你提供已经写好的工具或者数据转换而来的,生成器需要我们自己用python代码构建的工具 生成器的构建方式 通过生成器函数 def func(): print(11) return 22 ret=func() print(ret) #结果为:11 22 #将函数中的return换成yield,这样func就不是函数了,而是一个生成函数 def func(): print(11) yiel