我想知道在C#中使用'using'块的最佳方法是哪种。
方法1:在'使用'块内循环
void MyMethod(List<Prod> productList)
{
using(MyResource mr = new MyResource())
{
foreach(Prod product in productList)
{
//Do something with the resource
}
}
}
方法2:在'使用'区块之外循环
void MyMethod(List<Prod> productList)
{
foreach(Prod product in productList)
{
using(MyResource mr = new MyResource())
{
//Do something with the resource
}
}
}
我想知道哪种方法更可取,为什么。这两者之间会有性能差异吗?如果资源是...说数据库连接或对象,它又如何不同?
谢谢!
答案 0 :(得分:3)
在方法1中,您为循环创建一次资源。
在方法2中,您可以在产品列表中的每个产品上创建新资源。
除非有必要,否则不建议使用方法2。
方法1具有更好的性能,有发烧对象创建/销毁(以及消耗的内存)。特别是如果它是一个数据库,如果有一个池连接就会发生事件。
答案 1 :(得分:0)
此:
using(MyResource mr = new MyResource())
{
//Do something with the resource
}
大致翻译为:
MyResource mr = new MyResource();
try {
//Do something with the resource
} finally {
mr.Dispose();
}
除了在第一个示例中的右大括号之后mr不可用。
如果您在两个示例中进行此替换,您将看到它们有多么不同。他们完成了不同的事情 - 在某些情况下都是有效的。
答案 2 :(得分:0)
它决定了该资源的范围。在外面,使用资源(变量)将被处置。
所以这取决于你的用法。通常&#34;使用&#34;用于创建和处理连接,以确保在所需操作后正确关闭。