当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《using语句是否阻止我关闭或销毁对象?》经验,为你挑选了1个好方法。

如果我使用类似的东西:

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

我是否必须做一个conn.close(); 或者使用声明是否阻止我做最后一次通话?它是否处理了使用块中的所有内容?例如,如果我将其他对象称为不相关的,那么它也会自动消耗吗?

谢谢.在阅读有关在微软网站上使用后,我不清楚.我想确保我没有任何内存泄漏.



1> Robert Pauls..:

    using块将处理OdbcConnection.

    正常范围规则适用于在使用块内声明的任何内容.

    using块不会清理任何其他IDisposable对象.它只清理声明的项目

    请注意,您可以使用块进行嵌套,或者如果项目类型相同,则可以同时初始化多个项目.

请参阅我的其他答案的最重要部分,了解如何在C#中使用using关键字以获取更多信息.

我还应该提到,一旦完成连接就可以关闭(处置)连接以释放资源.指南说调用者应该能够重复调用dispose方法.使用块基本上只是一个安全网,并允许在大多数情况下编写更清晰的代码.


[编辑]例如,在使用中进行多次初始化:使用相同的初始化多个对象,而不必使用块嵌套,如果对象是相同的类型:

using (Bitmap b1 = new Bitmap("file1"), b2 = new Bitmap("file2")) 
{ ... }

Joel Coehoorn提到了堆叠,它是嵌套但省略了大括号,就像你可以省略a 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)) 

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有