c#中Using块的目的是什么?它和局部变量有什么不同?
当前回答
在Using块离开后使用Dispose(),即使代码抛出异常。
因此,您通常将using用于需要在它们之后清理的类,例如IO。
所以,这个使用block:
using (MyClass mine = new MyClass())
{
mine.Action();
}
会做同样的事情:
MyClass mine = new MyClass();
try
{
mine.Action();
}
finally
{
if (mine != null)
mine.Dispose();
}
使用“使用”更简短,更容易阅读。
其他回答
它实际上只是一些语法糖,不需要对实现IDisposable的成员显式调用Dispose。
在Using块离开后使用Dispose(),即使代码抛出异常。
因此,您通常将using用于需要在它们之后清理的类,例如IO。
所以,这个使用block:
using (MyClass mine = new MyClass())
{
mine.Action();
}
会做同样的事情:
MyClass mine = new MyClass();
try
{
mine.Action();
}
finally
{
if (mine != null)
mine.Dispose();
}
使用“使用”更简短,更容易阅读。
在using块中放置代码可以确保一旦控件离开块,对象就会被处理(尽管不一定会被收集)。
using语句用于处理c#中实现IDisposable接口的对象。
IDisposable接口有一个名为Dispose的公共方法,用于释放对象。当我们使用using语句时,我们不需要在代码中显式地处理对象,using语句会处理它。
using (SqlConnection conn = new SqlConnection())
{
}
当我们使用上面的代码块时,内部生成的代码是这样的:
SqlConnection conn = new SqlConnection()
try
{
}
finally
{
// calls the dispose method of the conn object
}
更多细节请阅读:理解c#中的“using”语句。
using语句获取一个或多个资源,执行一条语句,然后处置资源。
推荐文章
- 如何从枚举中选择一个随机值?
- 驻留在App_Code中的类不可访问
- 在链式LINQ扩展方法调用中等价于'let'关键字的代码
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法
- 无法加载文件或程序集…参数不正确
- c#中枚举中的方法
- Javascript函数前导bang !语法
- 如何从字符串中删除新的行字符?