2011-02-08 56 views
0

在void过程中返回语句是否有任何意义。在void类型的过程中返回语句的重要性

我有一个场景,我使用了一些COM Interop,并且运行时行为很奇怪。当我使用Visual Studio进行调试时,代码执行得很好,但是从exe执行时它会出现错误。任何情况下都不会有例外。 我的代码是这样的。

private void function1() 
{ 
       DialogResult dialogResult = MessageBox.Show(messageInfo.DisplayText, GlobalData.MessageCaption, MessageBoxButtons.OKCancel); 
       if (dialogResult == DialogResult.OK) 
       { 
        minSize = (int)numericUpdown.Value; 
        return; 
       } 
       else 
       { 
        minSize = sampleSize; 
        return; //This is the return statement in question 
       } 
} 

当我在else块中添加return语句时,问题已解决[return语句后没有行。]。我通过反复测试这个问题来确认是否有返回声明,并且现在对于究竟发生了什么感到困惑。

这是否对应用程序的行为有任何改变。

+0

`else`之后还有其他事情发生吗? – BoltClock 2011-02-08 17:08:09

+0

@BoltClock否;返回是最后一条语句。 – 2011-02-08 17:11:02

回答

2

该方法将返回并且任何剩余的代码将不会执行。这取决于一些事情,例如返回是否在使用或try-catch块中 - 因为即使明确返回,某些事情也会运行。

无效返回类型不能返回任何东西。

至于你的奇怪的问题,假设代码完全是你发布的,然后返回将没有什么特别的。我只能猜测你没有发布所有的代码,这意味着返回可能会做一些事情(如停止duff代码运行)。

0

我还注意到在调试时以及System.DirectoryServices中的非debbuging和COM时有不同的行为。

不同的行为似乎与COM有关。

恕我直言,它是一个编译器或运行时错误。