Jon*_*ens 8 .net c# using-statement
可能重复:
什么是C#使用块,为什么要使用它?
我正在将旧网站转换为C#,我不确定何时应该使用'使用'.有没有一般指导方针?我知道它的好处,但我并不是100%确定如何使用它.是每次我'新'的方法/财产?
SqlConnection awesomeConn = new SqlConnection(connection);
Run Code Online (Sandbox Code Playgroud)
Jac*_*ope 20
如果一个类实现,IDisposable那么它将创建一些非托管资源,当你使用它们时需要将它们"处理掉".所以你会做类似的事情:
SqlConnection awesomeConn = new SqlConnection(connection);
// Do some stuff
awesomeConn.Dispose();
Run Code Online (Sandbox Code Playgroud)
为了避免忘记处理资源(在这种情况下关闭数据库连接),特别是在抛出异常时,您可以使用using语法在退出using语句的范围时自动调用dispose:
using (SqlConnection awesomeConn = new SqlConnection(connection))
{
// Do some stuff
} // automatically does the .Dispose call as if it was in a finally block
Run Code Online (Sandbox Code Playgroud)
实际上,using块相当于:
try
{
SqlConnection awesomeConn = new SqlConnection(connection);
// do some stuff
}
finally
{
awesomeConn.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
MSDN:
通常,当您使用IDisposable对象时,您应该在using语句中声明并实例化它.using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用它时)一旦调用Dispose,它也会导致对象本身超出范围.在using块中,该对象是只读的,不能修改或重新分配.
using语句确保即使在对象上调用方法时发生异常,也会调用Dispose.您可以通过将对象放在try块中然后在finally块中调用Dispose来实现相同的结果; 实际上,这就是编译器如何翻译using语句.前面的代码示例在编译时扩展为以下代码(注意额外的花括号以创建对象的有限范围):
例:
using (StreamReader stream = new StreamReader("path"))
{
string line = stream.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
如果您想自动处理对象,通常会使用它。否则你必须手动调用 myobj.Dispose() 。
请参阅此处的参考文档:http://msdn.microsoft.com/en-us/library/yh598w02.aspx
| 归档时间: |
|
| 查看次数: |
20980 次 |
| 最近记录: |