如何解决c#处理数据上下文
| 3个具有相同功能的示例: 方法1 使用大括号public static int TicketsRequiringSupportResponse()
{
int ReturnValue = 0;
using (var dc = new CrystalCommon.MainContext())
{
ReturnValue = (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
}
return ReturnValue;
}
方法2
使用没有括号
public static int TicketsRequiringSupportResponse()
{
int ReturnValue = 0;
using (var dc = new CrystalCommon.MainContext())
ReturnValue = (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
return ReturnValue;
}
方法3
没有括号,并在using块内返回
public static int TicketsRequiringSupportResponse()
{
using (var dc = new CrystalCommon.MainContext())
return (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
}
所有这些处理是否正确?方法3最整洁,代码最少,但是我担心它不能正确处理,因为return语句会中断。
解决方法
是的,他们都做同样的事情。大括号仅添加显式范围;默认情况下,“ 3”仅适用于下一条语句。从“ 3”中退出仍然可以进行处理(本质上是尝试/最终在幕后)。我的偏好是#3,但是为了清楚起见添加了大括号。
,实际上,我想说方法1是最干净的IMO-我知道花括号是多余的,但是它们有助于阐明/组织代码。而且,在using块之外声明和返回变量可以简化实时调试。
,它们都执行相同的操作并正确处理上下文。第一个和第二个完全相同。第一个和第二个都转换为以下代码:
int ReturnValue = 0;
Context dc = null;
try
{
dc = new CrystalCommon.MainContext();
ReturnValue = (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
}
finally
{
if(dc != null)
dc.Dispose();
}
return ReturnValue;
第三个翻译为:
Context dc = null;
try
{
dc = new CrystalCommon.MainContext();
return (dc.tblHelpCentreQuestions.Where(c => c.awaitingSupportResponse == true).Count());
}
finally
{
if(dc != null)
dc.Dispose();
}
因为在try块的作用域被保留时执行了finally块,所以这两个代码实际上是等效的。
,@Talljoe很好地解释了,它们都是等效的。我要添加的只是第四个示例,它实际上只是演示了Talljoe的详细信息,但对格式进行了一些修改:
public static int TicketsRequiringSupportResponse()
{
using (var dataContext = new CrystalCommon.MainContext())
{
return dataContext .tblHelpCentreQuestions.Where(
question => question.awaitingSupportResponse == true).Count();
}
}
请注意,我们为ѭ3添加了范围括号,并进一步从return语句中删除了多余的括号,然后简单地放下一行并缩进以允许更好的读取流,而不是长行(但是long值得商de。) '还尝试给ѭ9和lambda参数赋予一些描述性名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。