返回关键字,不停止方法的执行

本文关键字:执行 方法 不停止 关键字 返回 | 更新日期: 2023-09-27 18:15:03

我有三个类(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),直到值为假:

//Class B
if (textIsEmpty == true)
            {
                MessageBox.Show("Fill in the text fields");
                return;//Shouldnt this halt execution?
            }

我的问题是,方法2仍然是从类C调用,即使返回。我只能推测它与返回到一个单独的类有关。

返回关键字,不停止方法的执行

return结束当前执行的方法(将控制权返回给调用者)。调用者中的下一行是对另一个方法的调用。这是期望继续的地方。

如果下一行不应该执行,您应该通过返回例如在method1中返回布尔值并将对方法2的调用包装在If语句中来指示。


//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      
  }             
}

修改这些行的Validate Method实现

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;
  }
}

修改调用Validate方法如下:

if(!validateForm.Validate(this))
   return;
processForm.CreateDocument();

这将做你所期望的程序