首頁  >  文章  >  後端開發  >  C# 命令列參數

C# 命令列參數

王林
王林原創
2024-09-03 15:07:091137瀏覽

在C#中,程式的執行是從main()方法開始的。 main() 方法不接受任何其他方法的參數,但它接受使用者透過命令列傳遞給它的參數,這些參數稱為命令列參數。以下是有關 C# 中命令列參數的一些要點:

  • main() 方法接受使用者以字串類型陣列傳遞的參數。
  • 它在程式執行期間​​接受參數。
  • 使用者可以使用 Convert 類別或 Parse() 方法將這些 string 類型的參數轉換為 C# 中的其他類型。

文法及解釋

採用命令列參數的 Main() 方法的語法如下:

static void Main(string[] args)
{
//user code
}

在上面的語法中,‘static’是關鍵字,表示Main()方法可以在沒有任何實例的情況下執行。 ‘void’是回傳類型。 「Main」表示這是程式的 Main() 方法,「string[]」是傳遞給該方法的參數類型。 ‘args’ 是使用者定義的參數名稱。

C# 中的命令列參數如何運作?

命令列參數作為字串類型陣列傳遞給 Main() 方法,因此我們可以在執行程式時傳遞 n 個參數。

範例:

public static void Main(string[] args)
{
//user code
}

當我們將參數傳遞給上面的 Main() 方法時,它將被「args」變數看到,它是一個字串類型的陣列。然後,我們可以使用索引位置存取該數組中的各個參數。

之前,傳遞的每個元素都是字串類型,稍後可以使用 C# 提供的 Convert 類別或 Parse() 方法將其變更為所需的資料類型,如下例所示:

long num = long.Parse(args[0]);

上面的語句將使用 Parse() 方法將索引號 0 處的參數轉換為等效的「long」值,然後將其儲存在類型為「long」的變數「num」中。

int num = Convert.ToInt32(args[1]);

該語句會將索引號 1 處的參數轉換為等效的 32 位元有符號整數,然後將其儲存在類型為「int」的變數「num」中。

我們也可以檢查命令列參數是否存在,即使用「Length」屬性檢查參數是否傳遞給 Main() 方法,如下所示:

if (args.Length > 0)
{
System.Console.WriteLine("Arguments passed");
}
else
{
System.Console.WriteLine("Arguments are not passed");
}

對於 Windows 窗體應用程序,要在 Main() 方法中啟用命令列參數,我們需要修改「program.cs」檔案中 Main() 方法的簽章。這是因為 Windows 窗體設計器產生的程式碼包含沒有輸入參數的 Main() 方法。

如果您在 Visual Studio 中使用 C#,那麼有一個很好的方法可以在 Visual Studio 中為 Main() 方法輸入命令列參數。以下是一些步驟:

  1. 右鍵點選包含解決方案資源管理器的 main () 方法的專案。
  2. 點選「屬性」
  3. 在「屬性」視窗中,轉到「偵錯」標籤
  4. 在偵錯中,會有一個文字方塊顯示「命令列參數」。

我們可以在此文字方塊中輸入命令列參數,每個參數之間以空格分隔。請在下面找到相同的螢幕截圖:

C# 命令列參數

C# 命令列參數範例

下面提到了不同的例子:

範例#1

例如,透過命令列參數從使用者取得十個整數作為輸入,並檢查這些數字中的奇數和偶數。

代碼:

using System;
using System.IO;
using System.Collections.Generic;
namespace ConsoleApp4
{
class Program
{
public static void Main(string[] args)
{
List<int> evenArray = new List<int>();
List<int> oddArray = new List<int>();
try
{
//checking if any argument exists
if (args.Length == 0)
{
Console.WriteLine("Please enter numbers to check for odd even!");
return;
}
//accessing arguments using for loop
for (int i = 0; i < args.Length; i++)
{
//checking for odd and even
if ((Convert.ToInt32(args[i]) % 2) == 0)
{
evenArray.Add(Convert.ToInt32(args[i]));
}
else
{
oddArray.Add(Convert.ToInt32(args[i]));
}
}
//displaying all the numbers entered
Console.WriteLine("Numbers entered:");
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine(args[i]);
}
//displaying even numbers entered
Console.WriteLine("\nEven numbers: ");
for (int i = 0; i < evenArray.Count; i++)
{
Console.WriteLine(evenArray[i]);
}
//displaying odd numbers entered
Console.WriteLine("\nOdd numbers: ");
for (int i = 0; i < oddArray.Count; i++)
{
Console.WriteLine(oddArray[i]);
}
Console.ReadLine();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}

輸出:

C# 命令列參數

包含執行上述程式的命令(輸入輸入和收到輸出)的螢幕截圖如下:

範例#2

例如,透過命令列從使用者取得一個數字並計算其階乘。

代碼:

using System;
using System.IO;
using System.Collections.Generic;
namespace ConsoleApp4
{
class Program
{
public static void Main(string[] args)
{
int number;
int factorial;
try
{
//checking if any argument exists
if (args.Length == 0)
{
Console.WriteLine("Please enter a number to calculate " +
"its factorial!");
return;
}
if(args.Length > 1)
{
Console.WriteLine("Please enter only one number.");
return;
}
Console.WriteLine("The number entered is: " + args[0]);
number = Convert.ToInt32(args[0]);
factorial = number;
//calculating factorial of number using 'for' loop
for(int i = number - 1; i >= 1; i--)
{
factorial = factorial * i;
}
Console.WriteLine("Factorial of {0} is {1}: ", args[0], factorial);
Console.ReadLine();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}

輸出:

C# 命令列參數

包含執行上述程式的命令以及輸入的數字和收到的輸出的螢幕截圖如下:

注意:我們使用「Developer Command Prompt for VS 2019」執行了上述兩個程式。我們也可以透過 Visual Studio 的「偵錯」選項中的「命令列參數」文字方塊提供命令列參數,從 Visual Studio 執行這些程式。

結論

命令列參數是使用命令列從使用者傳遞到程式的 Main() 方法的參數。使用者在程式執行期間​​輸入這些參數。這些參數由 Main() 方法以字串類型陣列形式接收。

以上是C# 命令列參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:C# 命令下一篇:C# 命令