开放的编程资料库

当前位置:我爱分享网 > C#教程 > 正文

C# 命令行参数

在本文中,我们展示了如何在C#中使用命令行参数。

命令行参数是通常通过终端传递给控制台程序的值。

我们可以通过声明一个string[]类型的参数来将命令行参数发送到Main方法。使用顶级语句的程序有一个默认的内置args变量,其中包含参数。

Main中的C#cmd参数

在第一个示例中,我们将命令行参数传递给Main方法。

class Program
{
    static void Main(string[] args)
    {
        foreach (var arg in args)
        {
            Console.WriteLine(arg);
        }
    }
}

在程序中,我们只是将所有参数打印到控制台。

static void Main(string[] args)

命令行参数具有string[]类型。将变量命名为args是一种惯例。

$ dotnet run John Doe gardener
John
Doe
gardener

没有Main的C#cmdargs

如果没有Main方法,参数可以通过args内置变量访问。

Console.WriteLine($"You have passed {args.Length} arguments");

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

程序打印命令行参数的数量并将它们打印到终端。

$ dotnet run 1 2 3 4 5 6
You have passed 6 arguments
1
2
3
4
5
6

C#环境.GetCommandLineArgs

Environment.GetCommandLineArgs返回一个字符串数组,其中包含当前进程的命令行参数。

string[] cargs = Environment.GetCommandLineArgs();

Console.WriteLine($"You have passed {cargs.Length} arguments");

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

它比默认的内置args变量更明确。此外,Environment.GetCommandLineArgs将程序名称计为参数之一。

$ dotnet run 1 2 3 4 5 
You have passed 6 arguments
/home/jano/Documents/prog/csharp/cmd-args/SimpleEx/bin/Debug/net6.0/SimpleEx.dll
1
2
3
4
5

C#环境.命令行

Environment.CommanLine返回包含命令线性参数的字符串。

string cargs = Environment.CommandLine;
Console.WriteLine(cargs);

string[] vals = cargs.Split(" ");

try
{
    int sum = vals.Skip(1).Select(e => Convert.ToInt32(e)).Sum();
    Console.WriteLine($"The sum of values is {sum}");
    return 0;
}
catch (FormatException e)
{
    Console.WriteLine("Invalid input");
    Console.WriteLine(e.Message);
    return 1;
}

程序需要一个整数列表作为输入。

string cargs = Environment.CommandLine;

我们使用Environment.CommandLine获取命令行输入。

string[] vals = cargs.Split(" ");

我们将字符串分成几部分。

int sum = vals.Skip(1).Select(e => Convert.ToInt32(e)).Sum();

我们跳过第一个参数,即程序名称。我们将字符串转换为整数并计算总和。

catch (FormatException e)
{

解析命令行参数很容易出错。我们可以获得FormatExceptions

C#命令行解析器

命令行解析器库提供了一个简洁明了的API,用于操作命令行参数。

$ dotnet add package CommandLineParser

我们添加了CommandLineParser包。

namespace CommandLineArgs;

using CommandLine;

class Options
{
    [Option("vals")]
    public IEnumerable<int>? Vals { get; set; }

}

class Program
{
    static void Main(string[] args)
    {
        Parser.Default.ParseArguments<Options>(args).WithParsed<Options>(o =>
        {
            if (o.Vals != null)
            {
                int sum = o.Vals.Sum();
                Console.WriteLine($"The sum is {sum}");
            }
            else
            {
                Console.WriteLine("No arguments");
            }
        });
    }
}

程序定义了一个--vals选项,它接受一个整数序列。

$ dotnet run --vals 1 2 3 4 5 6
The sum is 21

在本文中,我们使用了C#中的命令行参数。

列出所有C#教程。

未经允许不得转载:我爱分享网 » C# 命令行参数

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏