2011-03-09 39 views
12

我打算在我的一個shell腳本中使用C#可執行文件的返回碼。我有兩個選擇:使用Environment.ExitCode與從主返回int

從主方法返回一個int值

class MainReturnValTest 
{ 
    static int Main() 
    { 
     //... 
     return 0; 
    } 
} 

(OR)

使用Environment.Exit與退出代碼

class MainReturnValTest 
{ 
    static void Main() 
    { 
     //... 
     Enviroment.Exit(exitCode); 
    } 
} 

使用上述任何一種w ays從可執行文件返回值?或者是其中一個比其他人更受歡迎?

+0

可能重複[何時應該使用Environment.Exit來終止控制檯應用程序?](http://stackoverflow.com/questions/692323/when-should-one-use-environment-exit-to-terminate- a-console-application) – nawfal 2014-01-10 10:21:03

+0

Downvoted,因爲這個問題的標題提到'Environment.ExitCode',但問題的文本談論'Environment.Exit()'。這些不是一回事。 – Dan 2016-06-22 17:36:25

回答

16

Environment.Exit()是一個粗魯的中止。它立即終止該過程。只有在檢測到嚴重故障時才使用它,例如,在AppDomain.UnhandledException事件處理程序中它是適當的。當程序由於未處理的異常而即將終止時運行。

這是你的潛在客戶:異常是發出異常情況的一種好方法,它應該以不爲零的ExitCode來終止程序。實際上,它會自動設置爲異常的HResult屬性值。無需代碼。

7

如果你正在寫一個線性程序,那麼從Main返回就沒問題。如果你有更復雜的邏輯,或者其他可能的執行線程,那麼你可能需要使用Exit(returnCode)。這兩種方式將等同於您的shell腳本。

+1

除了Environment.Exit()等同於在程序仍在運行時殺掉程序的電源。應該避免不惜一切代價,如下一張海報所述。 – debracey 2011-03-10 01:58:38

1

不同之處在於,您需要根據其他應用程序的退出狀態來處理父應用程序上的事件。返回主要在應用程序中使用,而exit用於突然結束應用程序。這裏退出狀態可以被另一個應用程序用來決定它的下一步。

返回值用於將值返回給調用代碼的另一個函數。或者指示某個事件的代碼執行結束。

你也可以看到它是這樣的:

1)報表結束的功能,這可能是主要的();退出程序用於結束程序。

2)使用某個返回值結束程序不能被另一個應用程序隱式解釋,但可以使用退出狀態來決定代碼實現。