2011-02-08 77 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有關。

恕我直言,它是一個編譯器或運行時錯誤。