IRONSOFTWAREHOME

10 分鐘或更短時間內在 C# 應用程式中引入命令行參數

Command Line Arguments in C# Applications in 10 Minutes or Less

Tim Corey

8m 46s

在建立現代C#應用程式時,開發者常常需要在程式的啟動和行為上有一些彈性。 不需要每一個選項都寫死在程式碼裡,您可以透過允許使用者在啟動時傳遞命令行參數,使您的應用程式變得動態。 這使開發者和使用者都能夠直接通過命令行提供輸入參數,調整應用程式的運行,而不需更改程式碼。

在他的 "Command Line Arguments in C# Applications in 10 Minutes or Less" 十分鐘教學中,Tim Corey 清晰地演示了如何有效地在控制台應用程式和 Windows Forms 應用程式中啟用和處理命令行參數。 本文將按 Tim 的說明一步步整理這些概念。

什麼是命令行參數?

一開始,Tim 解釋了為什麼命令行參數很重要。 他將其比作我們啟動像 Docker 這樣的工具時,需要指定載入的映像或要執行的任務的方式。 同樣地,在C#命令行應用程式中,您可以傳遞參數來定義程式在運行時的行為。

例如,如果您運行一個處理檔案的控制台應用程式,您可能希望透過命令行輸入來指定檔案路徑或模式,而不是修改程式碼。

設置控制台專案

Tim 在 Visual Studio 中開始了一個基本的 .NET 8 控制台應用程式專案。 預設的程式碼僅列印出類似"按回車鍵退出"的訊息,透過 Console.ReadLine() 語句在關閉之前等待使用者輸入。

現在,為了處理命令行輸入,Tim 使用了 args 陣列,這用來儲存執行時傳遞給應用程式的參數。 雖然現代C#控制台應用程式使用全域語句,背後仍有進入點定義為:

static void Main(string[] args)

有時是:

static int Main(string[] args)

這些簽名代表主方法 - 在此處開始執行。 args 參數是一個字串陣列 (string[]),其中包含從命令行提供的所有參數。

Tim 演示了如何使用 foreach 迴圈遍歷 args 陣列:

foreach (var arg in args)
{
    Console.WriteLine(arg);
}

在此,var arg 代表 args 陣列中的每個字串參數,程式將它們顯示在控制台輸出的每一行。

Tim 指出,雖然全域語句隱藏了諸如類 Program 和 Main 方法的樣板程式碼,但一切仍然一樣運行 - args 陣列始終可用並準備好捕捉命令行參數。

運行控制台應用程式

接下來,Tim 示範了如何測試這個功能。 在 Visual Studio 內正常運行程式不會顯示任何不同,因為沒有提供命令行輸入。

為了正確測試,他手動修改了執行過程:他打開檔案總管,導航至專案的 bin → Debug → net8.0 資料夾,並從該路徑啟動終端窗口。

從那裡,他使用以下命令:

ConsoleArgs.exe "hello world" -t timing

此命令顯示了幾個關鍵點:

  • 引號內的"hello world"被視為一個字串參數,而不是兩個單獨的單詞。

  • 標誌 -t 和詞 timing 被視為另外兩個參數。

執行時,控制台輸出顯示:

hello world  
-t  
timing

每個行參數代表 args 陣列中的一個元素。 Tim 解釋說,這確認了命令行參數的正確使用 - 控制台應用程式成功地接收並顯示了在執行期間傳遞的所有參數。

他提到,開發者還可以在從專案目錄運行時使用 .NET run 來代替執行檔路徑:

dotnet run -- "hello world" -t timing

雙劃線 (--) 告訴 .NET 將它之後的所有內容視為程式的命令行參數,而不是 .NET CLI 自身的參數。

處理和解析命令行參數

現在我們可以讀取參數了,Tim 討論了如何智能地處理命令行參數。

例如,如果 -t 是一個期望值的標誌,程式必須知道要將下一個字串參數作為其值來處理。 Tim 顯示,您可以通過檢查 args 陣列中的索引來手動解析這個:

for (int i = 0; i < args.Length; i++)
{
    if (args[i] == "-t")
    {
        var value = args[i + 1];
        Console.WriteLine($"Timing parameter: {value}");
    }
}

這樣的方法讓您可以處理命名參數、數字型別,甚至詳細模式標誌。 Tim 指出,開發者通常使用 switch 語句,甚至是外部文件和程式庫來進行更高級的參數解析,但 System 命名空間和 args 陣列已經提供了基本情況所需的所有功能。

擴展至 Windows Forms 應用程式

在演示控制台應用程式後,Tim 轉向了一個 Windows Forms 應用程式(WinForms)。

在生成的程式碼中,Program.cs 文件包含一個靜態的 void Main() 方法,但它還不接受參數。 為了啟用命令行參數,Tim 手動修改了 Main 方法以包括 args 參數:

[STAThread]
static void Main(string[] args)
{
    ApplicationConfiguration.Initialize();
    Application.Run(new Form1(args.FirstOrDefault() ?? "default"));
}

他解釋說,args.FirstOrDefault() 從 args 陣列中檢索首個輸入參數(或在無參數傳遞時返回 "default" )。

然後,在 Form1 類中,Tim 更新了構造函式以接受一個字串參數:

public Form1(string name)
{
    InitializeComponent();
    displayName.Text = name;
}

在此,displayName 是在 Windows Forms Designer 中定義的一個標籤,現在它顯示透過命令行傳遞的參數。

當他在沒有參數的情況下運行程式時,標籤顯示 "default"。 當他再次運行並帶有:

WinFormsArgs.exe "Hello World"

表單窗口顯示 "Hello World"。

Tim 解釋說,這種技術允許 Windows Forms 應用程式像控制台應用程式一樣支持命令行參數 - 給使用者提供了動態更改啟動行為的能力。

命令行參數的實際用途 (7:18)

Tim 最後討論了這項功能如何使命令行工具更具多樣性。 開發者可以使用命令行參數來:

  • 以不同模式啟動應用程式(例如,黑暗模式 vs 亮光模式)。

  • 在啟動時提供文件路徑或配置資訊。

  • 使用簡單開關如 -v 或 --debug 啟用詳細模式或除錯功能。

  • 建立快捷方式來為不同工作流傳遞特定參數。

通過設計主方法來接受字串參數,您可以輕鬆擴展應用程式的靈活性和適應性 - 不需要額外的使用者輸入對話框或配置文件。

總結 (8:15)

他的範例驅動講解表明,處理C#中的命令行參數並不複雜 - 只是要了解每個應用程式都有一個進入點(Main),命令行傳遞的參數作為字串陣列到達。

無論您是處理控制台應用程式還是 Windows Forms 應用程式,這個概念使您的程式能夠動態回應啟動時指定的命令、值和參數。

最終收穫

Tim Corey 的 影片 提供了一個清晰且實用的指南,來正確使用 C# 中的命令行參數。 通過理解 args 參數在 Main 方法中的工作原理,開發人員可以輕鬆建立、解析和使用參數,讓應用程式更為強大且易於配置。

因此,下次構建 C# 專案時,請記住,您的命令行參數不僅僅是技術語法 - 它們是組合您的程式和使用者之間的橋樑,為您的程式碼賦予更多的力量、靈活性和實際可用性。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立