返回一个方法值inside获取 DataContext 的 using 语句似乎总是有效fine, 像这样:
public static Transaction GetMostRecentTransaction(int singleId)
{
using (var db = new DataClasses1DataContext())
{
var transaction = (from t in db.Transactions
orderby t.WhenCreated descending
where t.Id == singleId
select t).SingleOrDefault();
return transaction;
}
}
但我总觉得我应该这样关闭某事在我打破使用括号之前,例如通过定义交易beforeusing语句,获取它的值inside括号,然后返回after括号。
在 using 括号之外定义和返回变量是否是更好的做法或以任何方式节省资源?
不,我认为这样更清楚。不用担心,Dispose
仍将被称为“正在退出” - 并且仅after返回值被完全评估。如果在任何时候抛出异常(包括评估返回值)Dispose
仍然会被调用。
虽然你肯定could走更长的路线,这是两条额外的线,只是添加了多余的内容和额外的上下文来跟踪(精神上)。事实上,您并不真正需要额外的局部变量 - 尽管它在调试方面很方便。你could只要有:
public static Transaction GetMostRecentTransaction(int singleId)
{
using (var db = new DataClasses1DataContext())
{
return (from t in db.Transactions
orderby t.WhenCreated descending
where t.Id == singleId
select t).SingleOrDefault();
}
}
事实上,我什至可能想使用点表示法,并将Where
内的条件SingleOrDefault
:
public static Transaction GetMostRecentTransaction(int singleId)
{
using (var db = new DataClasses1DataContext())
{
return db.Transactions.OrderByDescending(t => t.WhenCreated)
.SingleOrDefault(t => t.Id == singleId);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)