尝试更好地理解“using”语句

2023-12-11

我读过几篇关于 using 语句的文章,试图理解何时应该使用它。听起来大多数人认为应该尽可能多地使用它,因为它可以保证处理未使用的物品。

问题是所有的例子总是显示这样的内容:

using (SqlCommand scmFetch = new SqlCommand())
{
    // code
}

这是有道理的,但它只是一小段代码。在数据库上执行查询时应该做什么?全部步骤是什么?它会看起来像这样吗:

string sQuery = @"
    SELECT [ID], [Description]
    FROM [Zones]
    ORDER BY [Description] ";

DataTable dtZones = new DataTable("Zones");

using (SqlConnection scnFetchZones = new SqlConnection())
{
    scnFetchZones.ConnectionString = __sConnectionString;
    scnFetchZones.Open();

    using (SqlCommand scmdFetchZones = new SqlCommand())
    {
        scmdFetchZones.Connection = scnFetchZones;
        scmdFetchZones.CommandText = sQuery;

        using (SqlDataAdapter sdaFetch = new SqlDataAdapter())
        {
            sdaFetch.SelectCommand = scmdFetchZones;
            sdaFetch.Fill(dtZones);
        }
    }

    if (scnFetchZones.State == ConnectionState.Open)
        scnFetchZones.Close();
}

我想知道的是:
• 是否可以使用 4、5、10 个嵌套的 using 语句来确保释放所有对象?
• 我在什么时候做错了?我应该考虑修改吗?
• 如果修订is由于嵌套的 using 语句太多,我有什么选择?

您最终可能会得到一个强大的层次结构,但您的代码应该非常高效,对吗?或者你应该只输入,例如SqlDataAdapterusing 语句中的对象,它会以某种方式确保所有其他对象也被释放?

Thanx.


有许多嵌套的 using 语句是完全有效的:

using(A a = new A())
using(B b = new B())
{
   a.SomeMethod(b);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试更好地理解“using”语句 的相关文章

随机推荐

  • 将DEAP(遗传算法库)与spark结合使用

    是否可以使用 DEAP http deap readthedocs io en master 与 Spark 集群来映射适应度评估函数 我想运行 GA 但适应度函数相当长 我计划将其分布在 Spark 集群上 你应该看看使用多个处理器DEA
  • Tkinter - 多个按钮的同一事件

    使用 Tkinter 我有很多按钮 我希望每次按下任何按钮时都会触发相同的回调函数 我怎样才能知道按下了哪个按钮 def call p1 Which Button was pressed pass for i in range 50 B1
  • 模拟 PDO 获取失败情况

    符合php文档 PDO方法fetch 返回值FALSE两者均未找到记录AND失败时 例如 当数据库访问出现问题时 假设我将 PHP 错误报告系统设置为在失败时抛出异常 PDO ATTR ERRMODE gt PDO ERRMODE EXCE
  • 如何彻底清除 Laravel 中的缓存?

    我运行这些命令 php artisan view clear php artisan route clear s php artisan cache clear php artisan config clear php artisan co
  • 如果有人“窃取”我的 Facebook App ID,他们会造成什么损害?

    我创建了一个 Facebook 应用程序 ID 并将站点 URL 设置为 localhost 以便在进行身份验证 通过客户端 JavaScript 后 我在开发应用程序时会被重定向到本地计算机 我很想知道此设置是否存在任何风险 特别是如果我
  • 警告:date_default_timezone_get():

    我已经研究了我能找到的所有答案 但没有运气让它发挥作用 当我尝试运行 symfony 时出现以下错误 警告 date default timezone get 依赖 系统的时区设置 你是required使用 date timezone 设置
  • 如何检查android数据库中的重复名称?

    我想从两个编辑文本中输入姓名和电话号码 我使用两个按钮保存并使用列表视图在模拟器中显示它 输入姓名后 当我单击 保存 按钮时如何检查我是否已经输入了相同的名字 我是 Android 新手 解释会非常有帮助 public void onCre
  • 将产品标签移至 WooCommerce 产品描述

    我需要将产品标签移至 WooCommerce 产品描述的底部 我在用 将自定义内容添加到 WooCommerce 产品描述中 答案代码确实有效 我在产品描述下方收到文本 这是描述中的最后一行 现在我想添加产品元信息 产品 SKU 和标签 但
  • 在 php 脚本中使用缓存

    我对 php 中的缓存感到困惑 我在我的 php 文件中创建了一个用于显示 2 到 500 的文件 现在我想使用缓存文件来存储数据并显示它 我的代码如下 现在我如何使用缓存文件来保存输出并进一步在浏览器中显示 如果还有其他方法可以在 php
  • 如何从 WC_Subscription 实例对象获取用户 ID

    我有两个功能需要帮助 我希望它们能够处理我的订阅任务 代码注释 是我想要弄清楚的 如果您有其他反馈 我也愿意接受 这用于完成初始订阅付款和订阅续订 function payment made subscription How do I ge
  • MySQL 似乎正在覆盖记录

    我在 MySQL 中有一个全新的表 可以这样描述 Team Match Auto Gear Kpa Climb 1721 1 3 5 5 1 5813 2 2 2 15 0
  • Node v8 垃圾收集器 :: 如何调试长标记-清除时间?

    我使用 trace gc 标志运行我的应用程序以尝试找到一些性能问题 嗯 看来我可能已经找到了 1288678 ms Mark sweep 498 8 549 0 gt 488 8 548 0 MB 4085 ms idle notific
  • 带有 IntelliJ 和 SBT 的自定义文件夹结构的 Uber jar

    我对云还很陌生SBT IntelliJ 所以试试我的运气IntelliJ SBT构建环境以在 dataproc 集群上部署我的 jar 这是我的项目结构的屏幕截图 代码非常简单 main 定义在 mytestmain 它调用定义在中的另一个
  • Java正则表达式查找单词的完全匹配

    我正在尝试在 Java 中构建一个正则表达式模式来查找单词的精确匹配 例如 这个词hot应该在前 3 个字符串中找到 但在第四个字符串中找不到 hot in here It s hot how hot is it email protect
  • 匹配方括号内的内容,包括嵌套方括号

    我正在尝试编写一个剧透识别系统 以便将字符串中的任何剧透都替换为指定的剧透字符 我想匹配一个用方括号括起来的字符串 这样方括号内的内容就是捕获组1 并且包括括号在内的整个字符串就是匹配项 我目前正在使用 对这个答案中的表达式稍作修改here
  • ASP.NET 中的向导控件 - 如何将 NextButton Causesvalidation 属性设置为 false

    我尝试在代码和标记中设置它 但是当单击 下一步 按钮时 页面将被验证 我想防止这种情况发生 并控制何时应该进行验证 何时不进行验证 任何建议或代码示例将不胜感激 最简单的方法是从WizardStep其中验证将被跳过 但是 如果您需要高级功能
  • Python 嵌套列表理解与 If Else

    我试图使用列表理解来替换值列表中的多个可能的字符串值 我有一个列名称列表 这些名称取自cursor description UNIX Time col1 MCA col2 MCA col3 MCA col1 MCB col2 MCB col
  • 制作带有边框、圆角和透明背景的六边形形状

    我想在 CSS3 中制作一个带有边框 圆角和透明背景的六边形形状 如下图所示 我不能用圆角和边框来做这个 我的代码在这里 hexagon circle position relative margin 1em auto width 10em
  • RDLC 报告中的小计

    我需要在 RDLC 报告中显示小计 我的报告应显示如下数据 Book Student Borrowed Book1 John 2 Book1 Mary 3 Book1 Bob 1 Total 6 how to do it Book2 Ale
  • 尝试更好地理解“using”语句

    我读过几篇关于 using 语句的文章 试图理解何时应该使用它 听起来大多数人认为应该尽可能多地使用它 因为它可以保证处理未使用的物品 问题是所有的例子总是显示这样的内容 using SqlCommand scmFetch new SqlC