gpt4 book ai didi

c# - 如果一个 void 函数返回,我如何停止执行下一个函数调用?

转载 作者:行者123 更新时间:2023-11-30 14:33:23 25 4
gpt4 key购买 nike

我有两次不同的按钮点击调用相同功能的修改版本...

private void button1_Click(object sender, EventArgs e)
{ SendEmail(); }

private void button2_Click(object sender, EventArgs e)
{ SendRevisedEmail();}



public void SendEmail()
{
DataManip(ref item1, ref item2); //This is where I'd like the next 2 functions to not process if this one fails.
UpdateDB(ref item1, ref item2);
sendTechEmail(ref item1, ref item2);
}

public void SendRevisedEmail()
{
DataManip(ref item1, ref item2); //This is where I'd like the next 2 functions to not process if this one fails.
UpdateDB2(ref item1, ref item2);
sendRevisedTechEmail(ref item1, ref item2);
}

DataManip 函数中,我让它对表单执行一些检查并设置为抛出弹出消息并返回;如果它没有出现 flag1 = true

public void DataManip(ref string item1, ref string item2)
{
bool flag1 = false;

foreach (Control c in groupBox1.Controls)
{
Radiobutton rb = c as RadioButton;
if rb != null && rb.Checked)
{
flag1 = true;
break;
}
}

if (flag1 == true)
{
//Manipulate Data here
}
else if (flag1 != true)
{
MessageBox.Show("You didn't check any of these boxes!");
return;
};
}

截至目前,DataManip 中的 flag1 检查工作正常。如果缺少 groupBox1 中的条目,我可以验证它不会处理数据更改。

问题是在 SendEmail()SendRevisedEmail() 函数中,它仍然处理 DataManip(ref item1,引用 item2).

如何导致错误从 DataManip 中踢出并阻止/跳过其他两个函数调用的执行?

最佳答案

How can I cause an error to kick out of DataManip and prevent/skip those other two function calls from executing?

您有几个选择:

  • 更改返回bool 的方法。这将允许您在方法是否成功时返回一个值。
  • 如果方法“失败”是一个真正的错误,则引发异常。这将允许调用代码在需要时捕获并处理异常,或者如果它不知道如何处理它就冒泡。

请注意,您可能需要检查代码中的其他一些奇怪之处。使用 ref 传递所有内容的情况很少见。此外,在执行数据操作的同一方法中使用消息框类型通知通常不是一个好主意 - 您可能需要考虑将值的验证/提取与数据操作分开。

关于c# - 如果一个 void 函数返回,我如何停止执行下一个函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16592980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com