我有这个方法(下面)测试各种无效数据形式的几个条件。
如果方法找到无效数据,则返回false。逻辑有效。问题是我想特别通知用户这个问题。
我尝试在return语句之前添加一条消息,但是visual studio警告我在那之后代码无法访问。这是正常的,还是我做错了什么?
我的方法(并且已尝试消息框已被注释掉)
private Boolean isValidData()
{
if (!isPresent(txt_ArrivalDate, "Arrival Date"))
//MessageBox.Show("You must enter a value for this field,"Data Error");
return false;
if (!isPresent(txt_DepartDate, "Departure Date"))
return false;
if (!isValidDate(txt_ArrivalDate, "Arrival Date"))
return false;
if (!isValidDate(txt_DepartDate, "Departure Date"))
return false;
if (!isOnOrAfterToday(txt_ArrivalDate, "Arrival Date"))
return false;
if (!isOnOrAfterToday(txt_DepartDate, "Departure Date"))
return false;
if (!isAfterArrivalDate(txt_ArrivalDate, "Arrival Date", txt_DepartDate, "Departure Date"))
return false;
return true;
}
注意,验证方法会传递名称,因为我更愿意在方法中显示消息框,而不是在此方法中。
例如:
private Boolean isPresent(TextBox textbox, string name)
{
if (textbox.Text == "" || textbox.Text == null)
MessageBox.Show("Data must be entered for" + name, "Data Error");
return false;
return true;
}
然而,在return true语句中,我得到了代码无法访问的警告。
答案 0 :(得分:0)
您正在处理两个非常不同的代码位,具体取决于这是否是注释。
在这一个
if (!isPresent(txt_ArrivalDate, "Arrival Date"))
//MessageBox.Show("You must enter a value for this field,"Data Error");
return false;
return false;
取决于if
匹配。
在这一个
if (!isPresent(txt_ArrivalDate, "Arrival Date"))
MessageBox.Show("You must enter a value for (this field)","Data Error");
return false;
消息框已经过条件化,并且总是会发生返回。正如编译器告诉你的那样,这使得它下面的一切都无法到达。
这不是python,缩进对行为没有影响。
你可能正在寻找
if (!isPresent(txt_ArrivalDate, "Arrival Date"))
{
MessageBox.Show("You must enter a value for (this field)","Data Error");
return false;
}
现在两者消息框,return false;
由if
控制。
答案 1 :(得分:0)
它无法访问,因为你忘了用花括号包围这两行。目前你已经拥有了这个:
if (!isPresent(txt_ArrivalDate, "Arrival Date"))
MessageBox.Show("You must enter a value for this field,"Data Error");
return false;
无论第一个return false
语句是否返回if
或true
,false
语句都会运行,因此该点之后的任何内容都不会运行。
你想要这个:
if (!isPresent(txt_ArrivalDate, "Arrival Date"))
{
MessageBox.Show("You must enter a value for this field,"Data Error");
return false;
}
更好的是,你可以考虑建立你的错误信息,这样他们就找不到一个问题,然后下次找出另一个问题,等等。
这样的事情:
private bool IsValidData()
{
var errorMessages = new List<string>();
if (!isPresent(txt_ArrivalDate, "Arrival Date"))
errorMessages.Add("You must enter a value for this field.");
if (!isPresent(txt_DepartDate, "Departure Date"))
errorMessages.Add("Another message.");
if (!isValidDate(txt_ArrivalDate, "Arrival Date"))
errorMessages.Add("Another message.");
...
if (errorMessages.Any())
MessageBox.Show(string.Join(Environment.NewLine, errorMessages), "Errors");
return !errorMessages.Any(); // returns false if errors found, otherwise true
}