簡體   English   中英

在void類型的過程中返回語句的意義是什么

[英]What is the significance of a return statement in a procedure of void type

無效過程中的return語句是否有意義?

我有一個場景,我正在使用一些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語句的問題來確認,現在我對確切發生的事情感到困惑。

這是否改變了應用程序的行為方式。

該方法將返回,任何剩余的代碼將不會執行。 這取決於一些事情,比如返回是在using還是try-catch塊中 - 因為即使你明確地返回也會運行某些事情。

Void返回類型只是不能返回任何東西。

至於您遇到的奇怪問題,假設代碼完全是您發布的內容,那么返回將沒有什么特別的。 我只能猜測你沒有發布所有代碼,這意味着返回可能正在做某事(如停止運行的duff代碼)。

我還注意到在System.DirectoryServices中進行調試和進行非調試(與COM一起進行)時的不同行為。

不同的行為似乎與COM有關。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM