首页 > 后端开发 > C#.Net教程 > C# 命令行参数

C# 命令行参数

王林
发布: 2024-09-03 15:07:09
原创
1174 人浏览过

在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中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板