我有三个班级(A班,B班和C班)。 B类持有一种方法(方法1),而C类持有一种方法(方法2)。 A类的主要目的是在各自的类中调用每个方法。
A类调用B类中的方法1:
private void buttonSave_Click(object sender, EventArgs e) {
Process[] processes = Process.GetProcessesByName("WINWORD");// Kill Word Process
ProcessForm processForm = new ProcessForm();
Validation validateForm = new Validation();
validateForm.Validate(this);//Call to method 1
processForm.CreateDocument();//Call to method 2 still gets called after a return from this method...?
}
它包含一个条件来测试变量是真还是假,如果它是真的我需要它返回并且 NOT 返回到调用类(A类),直到值为false:
//Class B
if (textIsEmpty == true)
{
MessageBox.Show("Fill in the text fields");
return;//Shouldnt this halt execution?
}
我的问题是,即使返回,仍然会从C类调用方法2。我只能推测它与返回一个单独的类有关。
帮助将不胜感激。
答案 0 :(得分:4)
return
结束当前正在执行的方法(将控件返回给调用者)。调用者中的下一行是对另一个方法的调用。这是代码预期继续的地方。
如果不应该执行下一行,你应该在method1中返回例如boolean并在if语句中包含对方法2的调用。
//Class B
if (textIsEmpty == true) {
MessageBox.Show("Fill in the text fields");
return false;//Shouldnt this halt execution?
}
然后
private void buttonSave_Click(object sender, EventArgs e) {
Process[] processes = Process.GetProcessesByName("WINWORD");// Kill Word Process
ProcessForm processForm = new ProcessForm();
Validation validateForm = new Validation();
if (validateForm.Validate(this) ) { //Call to method 1
processForm.CreateDocument();//Call to method 2 only if indicated by method 1
}
}
答案 1 :(得分:2)
修改这些行的验证方法实施
public class B
{
public bool Validate(ClassA a)
{
// Process ClassA / FormA object
if (textIsEmpty == true)
{
MessageBox.Show("Fill in the text fields");
return false;
}
return true;
}
}
修改调用验证方法如下:
if(!validateForm.Validate(this))
return;
processForm.CreateDocument();
这将完成您对本程序的期望