完成后如何处理
本文关键字:处理 何处理 | 更新日期: 2023-09-27 17:58:53
我想在函数完成后处理实例。我认为。。。
此外我想将每个名称添加到一个数组中。
我试试:
using( Database db = new Database())
public string[] FindNameByLength(int minimumCharNumber)
{
try{
var query = from u in db.Users
where u.FullName.Length > minimumCharNumber
select u.FullName;
string[] namesLength;
int counter;
foreach (var s in query)
{
namesLength.Concat(new[] {s });
}
return namesLength;
}
finally IDisposable(db).dispose();
}
}
放入
using(...)
{
...
}
在您的功能内。也不要显式调用Dispose
。
public string[] FindNameByLength(int minimumCharNumber)
{
using (Database db = new Database())
{
var query = from u in db.Users
where u.FullName.Length > minimumCharNumber
select u.FullName;
string[] namesLength;
int counter;
foreach (var s in query)
{
namesLength.Concat(new[] { s });
}
return namesLength;
}
}
这里也不需要Finally
,因为无论您如何退出using
作用域(return
,exception,}
),都将始终调用Dispose
。
引用语句:提供一种方便的语法,确保正确使用IDisposable对象。
通常,当您使用IDisposable对象时,您应该在using语句中声明并实例化它。using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用它时)一旦调用Dispose,它还会导致对象本身超出作用域。在使用块中,对象是只读的,不能修改或重新指定。
using语句确保即使在对对象调用方法时发生异常,也会调用Dispose。您可以通过将对象放入try块中,然后在finally块中调用Dispose来获得相同的结果;事实上,编译器就是这样翻译using语句的
因此,要么使用使用块:
using (Database db = new Database())
{
}
或者,您可以使用try finally:
Database db = new Database();
try
{
}
finally
{
if (db != null)
((IDisposable)db).Dispose();
}