mke*_*y33 6 .net c# asp.net idisposable using-statement
假设我有以下内容:
using(var ctx = DataContextFactory.Create(0))
{ ... Some code ... }
Run Code Online (Sandbox Code Playgroud)
为什么不做以下操作而失去几个花括号?:
var ctx = DataContextFactory.Create(0);
ctx.Dispose();
Run Code Online (Sandbox Code Playgroud)
感谢您的建议!
Mar*_*ell 26
第一个更好.它确保即使抛出异常也会处理它,并且它正确处理Create(0)
返回null 的情况(即它不会尝试调用Dispose()
null实例).
一个using
说法是,因为总是更好...
Dispose()
,即使代码演变成不同的代码路径Dispose()
即使有异常也会被调用.它还会null
在调用之前检查Dispose()
,这可能很有用(假设您不仅仅是在调用new
).一个非显而易见的(对我来说,无论如何)技巧using
是当你有多个一次性物体时如何避免过度嵌套:
using (var input = new InputFile(inputName))
using (var output = new OutputFile(outputName))
{
input.copyTo(output);
}
Run Code Online (Sandbox Code Playgroud)
VS代码格式化程序将使两个语句从同一列开始.
事实上,在某些情况下,你甚至不必重复使用声明......
using (InputFile input1 = new InputFile(inputName1), input2 = new InputFile(inputName2))
Run Code Online (Sandbox Code Playgroud)
但是,在同一行上声明多个变量的限制适用于此类,因此类型必须相同,并且不能使用隐式类型var.
归档时间: |
|
查看次数: |
4690 次 |
最近记录: |