gpt4 book ai didi

c# - 嵌套的 Using 语句影响性能

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:55 24 4
gpt4 key购买 nike

     using (var db1 = new DataBase1Entities())
{
using (var db2 = new DataBase2Entities())
{
var list = (from obj in db2.Table1
where !db1.Table2.Any(i => i.Table2Col == obj.Table1Col)
select obj).ToList();
}
}

有谁知道如何从一个数据库表中检索值并将其与另一个数据库表进行比较?如果上面的代码是正确的,那么会不会导致性能问题?

最佳答案

你好像不知道what a using-statement does .实际上,它只不过是一个 try-finally-block,其中 finally 中调用了 Dispose。所以你的代码被翻译成如下:

DataBase1Entities db1 = null;
try
{
db1 = new DataBase1Entities();
DataBase1Entities db2 = null;
try
{
db2 = new DataBase2Entities()
// do something with db2
}
finally
{
if(db2 != null) db2.Dispose(); }
}
}
finally
{
if(db1 != null) db1.Dispose();
}

因此,using 可能会或可能不会影响性能,但 Dispose 并非如此。但是,您根本不必为此烦恼,因为您必须 调用Dispose。不这样做是一个非常糟糕的主意 - 特别是如果它是因为任何性能问题而完成的。 Dispose 将释放任何非托管资源,例如文件处理程序。如果您不调用它,则根本无法释放那些可能会产生内存泄漏的资源。

关于c# - 嵌套的 Using 语句影响性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com