gpt4 book ai didi

asp.net - using 语句是否阻止我关闭或销毁对象?

转载 作者:行者123 更新时间:2023-12-04 02:26:14 25 4
gpt4 key购买 nike

如果我使用类似的东西:

using (OdbcConnection conn = new OdbcConnection(....))
{
conn.open();
my commands and sql, etc.
}

我必须做一个 conn.close();或者 using 语句是否阻止我执行最后一次调用?它是否处理了 using 块中的所有内容?例如,如果我调用其他不相关的对象,它是否也会自动处理这些对象?

谢谢你。在阅读有关在 Microsoft 网站上使用的信息后,我不清楚。我想确保我没有任何内存泄漏。

最佳答案

  • using 块将处理 OdbcConnection。
  • 正常范围规则适用于 using 块内声明的任何内容。
  • using 块不会清理任何其他 IDisposable 对象。它只清理声明的项目
  • 请注意,您可以使用块嵌套,或者如果项目类型相同,则可以同时初始化多个项目。

  • 请参阅我对 How do I use the using keyword in C# 的其他答案的最重要部分了解更多信息。

    我还应该提到,您可以在完成连接后立即关闭(处置)连接以释放资源。指导方针说调用者应该能够重复调用 dispose 方法。 using 块本质上只是一个安全网,允许在大多数情况下编写更清晰的代码。

    [编辑]
    例如一个 using 中的多次初始化:如果对象是相同类型的,则在同一个 using 中初始化多个对象而不必嵌套 using 块:
    using (Bitmap b1 = new Bitmap("file1"), b2 = new Bitmap("file2")) 
    { ... }

    Joel Coehoorn 提到了堆叠,即嵌套但省略了大括号,就像您可以在 for 中省略大括号一样。 , 或 if陈述。 UI 不会通过缩进重新格式化。我很好奇 IL 长什么样。
    using(Bitmap b = new Bitmap("filex"))
    using(Graphics g = Graphics.FromImage(b))
    {
    }

    使用 error CS1044: Cannot use more than one type in a for, using, fixed, or declaration statement. 将不同的对象放在同一个中是错误的
    // error CS1044
    using(Bitmap b = new Bitmap("filex"), Graphics g = Graphics.FromImage(b))

    关于asp.net - using 语句是否阻止我关闭或销毁对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513407/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com