首页 / 知识
关于.net 2.0:使用yield遍历数据读取器可能不会关闭连接吗?
2023-04-14 10:19:00

Using yield to iterate over a datareader might not close the connection?这是一个示例代码,用于使用谷歌搜索时在几个地方找到的yield关键字从数据库检索数据:
我是否正确认为在此示例代码中,如果不对整个数据读取器进行迭代,则连接将不会关闭? 如果我正确理解yield,这是一个不会关闭连接的示例。
对于可能不会造成灾难性的数据库连接,我想GC最终会清理它,但是如果不是连接而是更关键的资源怎么办?
编译器综合的迭代器实现
迭代器的
只要您在 从我尝试过的简单测试来看,aku是正确的,只要foreach块退出,就立即调用配置。 @David:但是在调用之间保持调用堆栈,因此连接不会关闭,因为在下一个调用中,我们将在yield之后的下一条指令返回while语句,这是while块。 我的理解是,当处置迭代器时,连接也将随之处置。我也认为不需要Connection.Close,因为由于using子句,它将在处理对象时照顾到它。 这是我尝试测试行为的简单程序...
由于您在"使用"块中使用连接,连接将自动关闭。 从此技术说明来看,您的代码将无法按预期运行,但会在第二项上中止,因为返回第一项时连接已关闭。 @Joel Gauvreau:是的,我应该继续读下去。本系列的第3部分解释了编译器为final块添加了特殊处理,以便仅在真实端触发。 |
最新内容
相关内容
linux遍历文件命令?
linux遍历文件命令?,系统,数据,工具,文件,平台,信息,百度,位置,时间,适当,linux遍历文件每一行会变化吗1、自我实现 首先需要将所有的文件读取linux命令连接ip?
linux命令连接ip?,地址,系统,网络,工作,信息,命令,密码,名称,设备,服务,linux系统常用操作命令linux常用命令有pwd命令、cd命令、ls命令、catlinux命令连接网址?
linux命令连接网址?,网址,系统,地址,服务,传播,数据,命令,名字,环境,网站,如何使用linux命令打开网页)、sudo命令:sudo命令用来以其他身份来执linux存储数据命令?
linux存储数据命令?,系统,管理,数据,设备,情况,地址,工作,命令,服务,平台,Linux文件系统操作命令1、cat:可以显示文件的内容(经常和more搭配使linux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许linux数据库同步命令?
linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,DB2数据库在linux操作系统的指令有哪些?1、linux系统常用操作命令linux连接多条命令?
linux连接多条命令?,工具,情况,命令,分行,服务,地址,连续,终端,窗口,主机,linux怎么使多条命令同时执行基本上,您可以通过单一控制台窗口控制所linux命令搜索大全?
linux命令搜索大全?,地址,工作,系统,命令,管理,目录,标准,基础,工具,网络,linux命令大全linux常用命令有pwd命令、cd命令、ls命令、cat命令、glinux有线网连接命令?
linux有线网连接命令?,系统,网络,软件,电脑,密码,地址,信息,虚拟机,终端,命令,linux系统下怎么连接网络1、启动Linux,然后在网络设置中将eth0设linux编译连接命令?
linux编译连接命令?,系统,代码,环境,工具,文件,资料,电脑,百度,终端,命令,在linux0.12系统中编译0.12内核时,使用什么命令1、linux的源码是在/linux建立数据库命令?
linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服务,linux中在shell中怎么创建一个数据库1、以下的文章主要讲述的是linux命令进数据库?
linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,主机,linux系统mysql数据库怎么进入数据库首先确保linux下mysql安