在void函数中返回void和不返回之间有什么区别吗?

时间:2012-06-30 18:29:25

标签: c# void return-type

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

那么我是否劫持了这个函数以了解用户的选择?

或者我认为当程序员编写这个函数时,他必须在用户单击“取消”时返回一个void,并在用户单击“确定”时没有返回任何内容。这有可能我可以区分这两个动作 - 返回无效而不返回任何东西?

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

谢谢

2 个答案:

答案 0 :(得分:2)

返回void的函数只有一个返回 - 什么都没有 - 因此返回任何内容或返回void之间没有区别。

如果您无法更改现有功能,而它只显示一个MessageBox,我会废弃它,如果我是你就重新开始。

你想要的是:

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

使用您想要的邮件和标题调用该邮件,您将获得DialogResult.OKDialogResult.Cancel

的回复

如果它不仅仅显示MessageBox,您唯一的选择是检查该功能在单击OK时所做的任何更改,例如:

  • 如果仅在按下“确定”的情况下将记录添加到数据库,请检查该记录
  • 如果对象的状态发生变化,请检查该更改:

    OtherObject.SetValueIfOK(2);
    if (OtherObject.GetValue() == 2)
    {
        // OK was clicked
    }
    else
    {
        // Cancel was clicked
    }
    

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

答案 1 :(得分:0)

“返回无效”(你写return;)与什么都不返回完全相同。

您希望返回类似DialogResult的内容。 .NET框架经常使用DialogResult.OKDialogResult.Cancel来完成您的工作。