返回关键字,不停止方法的执行
本文关键字:执行 方法 不停止 关键字 返回 | 更新日期: 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();
这将做你所期望的程序