停止代码在查询中执行
我正在检查重复项,它发现它们并且If(isDuplicate)全部正常工作。 但代码继续,并提交所有提交,因为我不告诉它停止。 我该怎么做?停止并抛出错误面板,但它没有提交?停止代码在查询中执行
_db.tbl_Localities.InsertOnSubmit(locality);
bool isDuplicate = _db.tbl_Localities
.Any(x => x.Locality == txt_Locality.Text);
if (isDuplicate)
{
pnl_Message.Visible = true;
lbl_message.Text = " Duplicate entry!";
txt_Locality.Text = "";
}
// Save
// ====
_db.SubmitChanges();
您应该处理的条件else
一部分,或者抛出一个异常,如果它是你的程序意外情况:
_db.tbl_Localities.InsertOnSubmit(locality);
bool isDuplicate = _db.tbl_Localities
.Any(x => x.Locality == txt_Locality.Text);
if (isDuplicate)
{
pnl_Message.Visible = true;
lbl_message.Text = " Duplicate entry!";
txt_Locality.Text = "";
}
else
{
// Save
// ====
_db.SubmitChanges();
}
使用return;
if语句。
我永远不会建议使用除函数结尾以外的返回语句。当尝试维护代码时,它们很容易被忽略,并且在以后重构代码变得更加困难。 – 2013-02-28 11:21:34
@JustinHarvey我认为有很多情况下'返回'是适当的。例如。警戒条件,或从开关语句返回 – 2013-02-28 11:23:40
@JustinHarvey你可能在这里是正确的。我目前正在使用一些相信的代码。它只创建嵌套的if语句10级,这可能是另一个问题;)。特别是使用void返回它与验证有关的事情会更好,然后将if语句嵌套在我的眼睛中。 [在void方法中使用return是不好的做法吗?](http://*.com/questions/1283325/is-it-bad-practice-to-use-return-inside-a-void-method) – 2013-02-28 11:28:36
大概将Save部分移到'else'语句中,以便只在'isDuplicate'评估为false时才会完成。很难说清代码的其余部分。 – 2013-02-28 11:18:59
谢谢它总是最明显的..: - ) – StudentRik 2013-02-28 11:22:52