using 语句 - 确保正确使用可释放对象

using语句块的几种用法。

1、using 语句可确保正确使用 IDisposable 实例:

var numbers = new List<int>();
using (StreamReader reader = File.OpenText("numbers.txt"))
{string line;while ((line = reader.ReadLine()) is not null){if (int.TryParse(line, out int number)){numbers.Add(number);}}
}

当控件离开 using 语句块时,将释放获取的 IDisposable 实例。 using 语句可确保即使在 using 语句块内发生异常的情况下也会释放可释放实例。 在前面的示例中,打开的文件在处理完所有行后关闭。

2、使用 await using 语句来正确使用 IAsyncDisposable 实例:

await using (var resource = new AsyncDisposableExample())
{// Use the resource
}

有关使用 IAsyncDisposable 实例的详细信息,请参阅实现 DisposeAsync 方法一文中的使用异步可释放对象部分。

3、还可以使用不需要大括号的 using 声明:

static IEnumerable<int> LoadNumbers(string filePath)
{using StreamReader reader = File.OpenText(filePath);var numbers = new List<int>();string line;while ((line = reader.ReadLine()) is not null){if (int.TryParse(line, out int number)){numbers.Add(number);}}return numbers;
}

在 using 声明中进行声明时,局部变量在声明它的作用域末尾释放。 在前面的示例中,会在某个方法的末尾释放对象。

4、可以在一个 using 语句中声明多个相同类型的实例,如以下示例所示:

using (StreamReader numbersFile = File.OpenText("numbers.txt"), wordsFile = File.OpenText("words.txt"))
{// Process both files
}

在一个 using 语句中声明多个实例时,它们将按声明的相反顺序释放。

5、using 语句也可以采用以下形式:

using (expression)
{// ...
}

其中 expression 会生成可释放实例。 下面的示例演示了这一操作:

StreamReader reader = File.OpenText(filePath);using (reader)
{// Process file content
}

 警告

第5种的示例中,当控件离开 using 语句后,可释放实例会在其释放后仍保留在范围内。 如果进一步使用该实例,可能会遇到异常,例如 ObjectDisposedException。 因此,建议在 using 语句中声明可释放变量,或者使用 using 声明进行声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android源码下载

文章目录 一、Android源码下载 一、Android源码下载 AOSP 是 Android Open Source Project 的缩写。 git 常用命令总结 git 远程仓库相关的操作 # 查看 remote.origin.url 配置项的值 git config --list Android9.0之前代码在线查看地址&#xff1a;http://androidxref.com/ …

【LeetCode高频SQL50题-基础版】打卡第2天:第11-15题

文章目录 【LeetCode高频SQL50题-基础版】打卡第2天&#xff1a;第11-15题⛅前言 员工奖金&#x1f512;题目&#x1f511;题解 学生们参加各科测试的次数&#x1f512;题目&#x1f511;题解 至少有5名直接下属的经理&#x1f512;题目&#x1f511;题解 确认率&#x1f512;题…

使用python利用merge+sort函数对excel进行连接并排序

好久没更新了&#xff0c;天天玩短视频了。现在发现找点学习资料真的好难。 10.1期间偶然拿到一本书 本书是2022年出版的&#xff0c;看了一下不错&#xff0c;根据上面的案例结合&#xff0c;公司经营整合案例&#xff0c;分享一下。 数据内容来源于书中内容&#xff0c;仅供…

docker部署Vaultwarden密码共享管理系统

Vaultwarden是一个开源的密码管理器&#xff0c;它是Bitwarden密码管理器的自托管版本。它提供了类似于Bitwarden的功能&#xff0c;允许用户安全地存储和管理密码、敏感数据和身份信息。 Vaultwarden的主要特点包括&#xff1a; 1. 安全的数据存储&#xff1a;Vaultwarden使…

手机投屏电脑软件AirServer5.6.3.0最新免费版本下载

随着智能手机的普及&#xff0c;越来越多的人喜欢用手机观看视频、玩游戏、办公等。但是&#xff0c;有时候手机屏幕太小&#xff0c;不够清晰&#xff0c;也不方便操作。这时候&#xff0c;如果能把手机屏幕投射到电脑上&#xff0c;就可以享受更大的视野&#xff0c;更流畅的…

【javaweb】学习日记Day11 - tlias智能管理系统 - 文件上传 新增 修改员工 配置文件

目录 一、员工管理功能开发 1、新增员工 postman报错500的原因 &#xff08;1&#xff09;Controller类 &#xff08;2&#xff09;Service类 &#xff08;3&#xff09;Mapper类 2、根据ID查询 &#xff08;1&#xff09;Controller类 &#xff08;2&#xff09;Serv…

第11章 Redis(一)

11.1 谈谈你对Redis的理解 难度:★★★ 重点:★★ 白话解析 对Redis的理解无非从三个方面去说一说:背景,是什么,特性。 背景:数据直接存磁盘太慢了,虽然MySQL用到了BufferPool等缓存,但是为了保证数据不丢失,MySQL采用的RedoLog依然要直接写磁盘。所以,数据的存储就…

基于小波神经网络的网络流量预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022A 3.部分核心程序 ........................................................... %% 总流量数据 input(:,1)dat…

如何保证 RabbitMQ 的消息可靠性?

项目开发中经常会使用消息队列来完成异步处理、应用解耦、流量控制等功能。虽然消息队列的出现解决了一些场景下的问题&#xff0c;但是同时也引出了一些问题&#xff0c;其中使用消息队列时如何保证消息的可靠性就是一个常见的问题。如果在项目中遇到需要保证消息一定被消费的…

(高阶) Redis 7 第18讲 RedLock 分布式锁

🌹 以下分享 RedLock 分布式锁,如有问题请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分享😀 问题 分布式锁问题从(高阶) Redis 7 第17讲 分布式锁 实战篇_PJ码匠人的博客-CSDN博客 这篇文章来看,…

redis学习(二)——redis常见命令及基础数据类型

数据类型 基础数据类型 字符串 String abcMap集合 Hsah {name:“zhangsan”,age:18}列表 List [a, b, c, d]Set集合 Set {a,b,c}有序Set集合 SortSet {a:1,b:2,c:3} 特殊数据类型 GEO 地理坐标 {A:(100.2,35.1)}BitMap 位图&#xff0c;只存储0和1 01101011101HyperLog 基数…

js查询月份开始和结束日期

js查询月份开始和结束日期 月份开始和结束 月份开始和结束 整体不是很复杂&#xff0c;使用new Date()方法自带获取最后一天的时间 new Date(a,b,c),传递参数 参数a&#xff1a;是要获取的年份 参数b&#xff1a;是要获取的月份 参数c&#xff1a;是要获取的日期 传递日期为…

地图资源下载工具数据在线、离线查询及数据激活功能

哨兵相关产品&#xff0c;工具提供了表示系统是否为归档离线的信息&#xff01;您可以利用下载[定时重试]功能激活并下载哨兵相关离线产品数据&#xff01;

Java中栈实现怎么选?Stack、Deque、ArrayDeque、LinkedList(含常用Api积累)

目录 Java中的Stack类 不用Stack有以下两点原因 1、从性能上来说应该使用Deque代替Stack。 2、Stack从Vector继承是个历史遗留问题&#xff0c;JDK官方已建议优先使用Deque的实现类来代替Stack。 该用ArrayDeque还是LinkedList&#xff1f; ArrayDeque与LinkList区别&#xff1…

node安装,nvm管理器

一、下载nvm&#xff0c;nvm-setup.exe https://github.com/coreybutler/nvm-windows/releases 二、配置NodeJS下载代理镜像&#xff08;可选&#xff09; 可以在NVM安装根目录下的setting.txt文件中&#xff0c;配置NodeJS下载代理镜像&#xff0c;解决在线安装NodeJS时速度…

Java-多线程

摘要 多线程编程是现代软件开发中的一个重要概念&#xff0c;它允许程序同时执行多个任务&#xff0c;提高了程序的性能和响应性。本博客深入探讨了多线程编程的关键概念、原理和最佳实践。 线程、进程、多线程、并发、并行 进程 进程是计算机中运行的程序的实例。每次打开一…

《人间失格》阅读笔记

《人间失格》读书笔记 2023年10月7日读完&#xff0c;在过去的三个月时间内&#xff0c;有忙碌申博、从杭州辞职回家、准备入学、到澳门入学的事情&#xff0c;终于忙完了这些所有事情&#xff0c;回到了横琴的小房子里读完了这本书。 这本书前半部分讲了主角&#xff0c;作为…

Delphi编程:pagecontrol组件的tab字体变大

1、将pagecontrol组件属性中的font的字体变成四号。 2、将tabsheet1属性中的font的字体设置成八号。 结果如下&#xff1a;

水果种植与果园监管“智慧化”,AI技术打造智慧果园视频综合解决方案

一、方案背景 我国是水果生产大国&#xff0c;果园种植面积大、产量高。由于果园的位置大都相对偏远、面积较大&#xff0c;值守的工作人员无法顾及到园区每个角落&#xff0c;因此人为偷盗、野生生物偷吃等事件时有发生&#xff0c;并且受极端天气如狂风、雷暴、骤雨等影响&a…

山东省赛二阶段第一部分解题思路

提交攻击者的IP地址 192.168.1.7 这个直接awk过滤一下ip次数&#xff0c;这个ip多得离谱&#xff0c;在日志里面也发现了它的恶意行为&#xff0c;后门&#xff0c;反弹shell 识别攻击者使用的操作系统 Linux 找出攻击者资产收集所使用的平台 shodan 提交攻击者目…