关于c#:在void函数中return void和not return有什么区别

is there any difference between return void and not return in a void function

这里的情况:我在我的程序中调用了一个void函数,它提供了一个带有OK和Cancel的消息框,但是这个函数被封装了。我需要知道用户点击了什么。

那么我有没有劫持这个函数来知道用户的选择?

或者我认为程序员在编写这个函数时,必须在用户点击取消时返回一个void,而在用户点击确定时什么都没有返回。有没有可能我可以区分这两个动作 - 返回 void 并且不返回任何内容?

我知道这似乎是不可能的,但这就是为什么我来stackoverflow问你们。

谢谢


返回 void 的函数只有一个返回 - 无返回 - 因此无返回或返回 void.

没有区别

如果您无法更改现有功能并且它所做的只是显示一个 MessageBox,如果我是您,我会废弃它并重新开始。

你想要的是这样的:

1
2
3
4
public DialogResult GetDialogResult(string message, string caption)
{
    return MessageBox.Show(message, caption, MessageBoxButtons.OKCancel);
}

用你想要的消息和标题调用它,你会得到 DialogResult.OKDialogResult.Cancel

的返回

如果它不仅仅是显示消息框,您唯一的选择是检查函数在单击"确定"时所做的任何更改,例如:

  • 如果只有在按下 OK 时才将记录添加到数据库中,请检查该记录
  • 如果对象的状态发生变化,请检查该变化:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    OtherObject.SetValueIfOK(2);
    if (OtherObject.GetValue() == 2)
    {
        // OK was clicked
    }
    else
    {
        // Cancel was clicked
    }

其他任何事情,我认为你可能不走运。


"Returning void"(你会写成 return;)与什么都不返回完全一样。

你想返回类似 DialogResult 的东西。 .NET 框架经常使用 DialogResult.OKDialogResult.Cancel 来完成您想做的事情。