using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString))
{
// Do the datatbase transactions
}
它与这个有什么不同
SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString)
// Do the datatbase transactions
使用其中一个是否有提高性能/速度的效果?
答案 0 :(得分:3)
using语句允许 程序员指定何时对象 使用资源应该发布 他们。提供给使用的对象 声明必须执行 IDisposable接口。这个界面 提供Dispose方法,其中 应释放对象的资源。
也可以退出using语句 当using语句结束时 达到或抛出异常 和控制离开语句块 在声明结束之前。
这里可以找到一篇好文章
答案 1 :(得分:2)
这只是一条捷径。 :)
using (var foo = new Foo())
foo.bar();
等于:
Foo foo = new Foo();
try
{
foo.bar();
}
finally
{
if (foo != null)
((IDisposable)foo).Dispose();
}
使用关键字确保将处置对象(它必须实现IDisposable) 它在处理外部资源(数据库连接,文件流等)时很有用 - 尽管可能发生错误,它们仍会被释放。
答案 2 :(得分:1)
答案 3 :(得分:0)
通常,您应该对实现using
的任何对象使用IDisposable
语法 - 例如,SqlConnection
。
using
语句确保在(几乎)所有情况下对象在块的末尾正确放置,即使发生异常。
没有任何直接的速度/性能差异,但如果您不处理IDisposable
个对象(通常使用using
),那么您可能会遇到问题,因为重要资源尚未整理。
使用using
是很好的做法,几乎总是正确的做事方式。 不使用using
通常是一个坏主意,除非你完全确定你正在做什么以及为什么。
答案 4 :(得分:0)
在using构造中创建的对象在构造中具有生命周期(大括号{})。如果您注意到只能创建实现IDisposable接口的那些成员。它只是意味着在使用构造代码之后,编译器将自动在您创建的对象上调用dispose方法。它有助于垃圾收集。
与SqlConnection对象的情况一样,我们必须调用dispose,否则ado.net连接池(管理与数据库的连接)将为另一个传入请求分配新连接,而不是重用旧连接池。连接池只是最小化资源的固有方式。获取与数据库的连接所花费的时间。
参见: 连接池 IDisposable的
答案 5 :(得分:0)
using语句是
的快捷方式try
{
/* do the work here with obj */
}
finally
{
if (obj != null)
obj.Dispose();
}
答案 6 :(得分:-1)
using语句将自动调用finally,即一旦使用块完成,它将丢弃该对象。
using (SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString))
{
// Do the datatbase transactions
}
相当于:
SqlConnection myConnection = new SqlConnection(AppConfiguration.ConnectionString)
// Do the datatbase transactions
myConnection.Close();
myConnection.Dispose()