using语句的作用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > using语句的作用

using语句的作用

 2010/11/16 11:45:58  Java-king  http://king2009163-163-com.javaeye.com  我要评论(0)
  • 摘要:类似于try...catch...finally.vb:可以使用Using块保证系统在代码退出该块时释放资源。如果正在使用消耗大量内存或其他组件也需要使用的系统资源时,这样处理十分有用。Using{resourcelist|resourceexpression}[statements]EndUsing例:UsingscAsNewSqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ToString()
  • 标签:using语句

类似于try...catch...finally.?

?

vb:可以使用 Using 块保证系统在代码退出该块时释放资源。如果正在使用消耗大量内存或其他组件也需要使用的系统资源时,这样处理十分有用。

Using {?resourcelist?|?resourceexpression?}
    [?statements?]
End Using

例:

Using sc As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ToString())

?

End Using

?

resourcelist

???????? 如果未提供 resourceexpression,则是必选项。此 Using 块所控制的一个或多个系统资源的列表。

resourceexpression

如果未提供 resourcelist,则是必选项。引用要由此 Using 块控制的某个系统资源的引用变量或表达式

statements

可选。Using 块运行的语句块。

End Using

必选。终止 Using 块的定义,并释放该块控制的所有资源。

resourcelist 部分中的每个资源都具有以下语法和组成部分:

resourcename As?New?resourcetype [?(?[?arglist?]?)?]

- 或 -

resourcename As?resourcetype = resourceexpression

?

?

resourcelist 部分

resourcename

???????? 必选。引用 Using 块控制的系统资源的引用变量。

New

如果 Using 语句获取资源,则为必选项。如果已获取了资源,请使用第二种备选语法。

resourcetype

必选。资源的类。该类必须实现 IDisposable 接口

arglist

可选。您为创建 resourcetype 实例而传递到构造函数的参数的列表。请参见参数列表。

resourceexpression

必选。引用符合 resourcetype 要求的系统资源的变量或表达式。如果使用第二种备选语法,那么,在将控制传递给 Using 语句之前,您必须获取资源。?

???? 有时,代码要求非托管资源,如文件句柄、COM 包装或 SQL 连接。在使用一个或多个此类资源完成了代码后,Using 块确保这些资源的释放。这样,其他代码就可以使用它们。

托管资源由 .NET Framework 垃圾回收器 (GC) 释放,您不需要进行任何额外的编码。您也不需要用于托管资源的 Using 块。

?

Using 块有三个部分:获取、使用和释放。

  • 获取表示创建变量并将其初始化,以便引用系统资源。Using 语句可获取一个或多个资源,您可以在进入块之前恰好获取一个资源,并将其提供给 Using 语句。如果提供 resourceexpression,在将控制权传递给 Using 语句之前,您必须获取资源。

  • 使用表示访问资源并使用资源执行操作。UsingEnd Using 之间的语句代表资源的使用过程。

  • 释放表示针对 resourcename 中的对象调用 Dispose 方法。这使该对象可以完全终止其非托管资源。End Using 语句释放 Using 块控制的资源。

行为

Using 块的工作方式类似于 Try...Finally 构造,在该构造中,Try 块使用资源,而 Finally 块释放资源。因此,不管您如何退出块,Using 块都可确保资源的释放。即使发生未处理的异常(除 StackOverflowException 外),也是如此。

Using 语句获取的每个资源变量的范围仅限于 Using 块。

如果在 Using 语句中指定多个系统资源,效果就好像您将多个 Using 块相互嵌套一样。

?

Using 块中的结构化异常处理

?

如果需要处理可能发生在 Using 块中的异常,可以向该块中添加一个完整的 Try...Finally 构造。如果需要处理 Using 语句未成功获取资源的情况,可以进行测试,以确定 resourcename 是否为 Nothing

  • 相关文章
发表评论
用户名: 匿名