当前位置: 首页 > news >正文

.NET下 using 块的作用

🔍 using 的本意是什么?

using 是 C# 中用于 自动释放资源 的语法糖,适用于实现了 IDisposable 接口的对象(比如数据库连接、文件、网络流等)。

语法:

using (var resource = new SomeDisposableResource())
{// 使用资源
}
// 出了 using 块,自动调用 resource.Dispose()

相当于:

var resource = new SomeDisposableResource();
try
{// 使用资源
}
finally
{if (resource != null)resource.Dispose();
}

✅ using 的主要好处

1. 自动释放资源,防止资源泄露

  • 不手动调用 .Dispose() 容易忘记,导致连接没释放、文件没关闭、内存泄漏。

  • using 自动帮你搞定这一切。


2. 代码简洁,逻辑清晰

  • using 把资源的生命周期限定在一块区域内,一目了然。


3. 线程安全 & 稳定性

  • 即使发生异常(比如查询失败),finally 中的 .Dispose() 依然会被调用,确保资源能安全释放


❗但使用 using 的时候要注意:

不能返回依赖该资源的对象

public SqlCommand GetCommand()
{using (var conn = new SqlConnection(...)){var cmd = conn.CreateCommand(); // cmd 依赖 connreturn cmd; // ❌ conn 被释放,cmd 也无法用了}
}

这就像你关了煤气罐,还想继续煮饭——锅还在,火没了 😂

仅供学习参考

http://www.xdnf.cn/news/83539.html

相关文章:

  • 正则表达式
  • 【AAudio】A2dp sink创建音频轨道的源码流程分析
  • 【OSG源码阅读】Day 1: 从Viewer的run函数开始
  • Sentinel数据S2_SR_HARMONIZED连续云掩膜+中位数合成
  • Spark-SQL(总结)
  • Saliency Driven Perceptual Image Compression阅读
  • 如何解决消费者高频触发订单更新?
  • ProxySQL 的性能优化需结合实时监控数据与动态配置调整
  • pip install torchsummary报错
  • 5个Go接口常见错误及避免方法
  • 机器学习基础 - 分类模型之逻辑回归
  • 是否可以使用非被动 S4P 文件进行反嵌?
  • Redis—内存淘汰策略
  • Nginx:前后端分离配置(静态资源+反向代理)
  • AI算子开发是什么
  • CMake
  • 第48讲:空间大数据与智慧农业——时空大数据分析与农业物联网的融合实践
  • 数据库介绍
  • Eureka、LoadBalance和Nacos
  • 作为一个创业团队,Neo4j、Nebula Graph、HugeGraph‌、AllegroGraph‌等几款图数据库哪款更合适?
  • 【漫话机器学习系列】215.处理高度不平衡数据策略(Strategies For Highly Imbalanced Classes)
  • AI写代码之GO+Python写个爬虫系统
  • 基于 PaddleOCR对pdf文件中的文字提取
  • 深度学习4月22笔记
  • [翻译]从 unique 到 cleanups 和 weak:高效的新底层工具
  • 生产环境大数据平台权限管理
  • Neo4j 可观测性最佳实践
  • Vue指令详解:从入门到精通
  • BBR 的 minRTT 采集问题
  • 二叉树层序遍历技术解析与面试指南