【发布时间】:2021-01-05 10:16:28
【问题描述】:
您好,我想在用户输入 --dimensions 后获取这两个值。
例如当我这样做时:dotnet app.dll --dimensions 1 2(在命令行中)
打印出来
1
2
这是我想要的结果。
但是当我这样做时:dotnet app.dll --test --dimensions 1 2
它返回hi,这意味着--test 有效。但为--dimensions返回错误
hi
Unhandled exception. System.FormatException: Input string was not in a correct format.
at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Convert.ToInt32(Object value)
at MainClass.Main(String[] args)
我不希望该参数仅在给出第一个参数时才有效。这就是为什么我在--dimensions 之前添加了--test
当参数--dimensions 放置在任何地方时,我希望它能够工作。
例如dotnet app.dll --test --test --dimensions 1 2 --test
哪个应该返回
hi
hi
1
2
hi
我也是新手 :( 抱歉。
代码:
using System;
class MainClass
{
private static int value1, value2;
static void Main(string[] args)
{
foreach (string value in args)
{
int for_dimensions = 0;
string testing = "--test";
if (value == "--dimensions" && args.Length >= for_dimensions + 2)
{
object test1 = args.GetValue(for_dimensions+1);
value1 = Convert.ToInt32(test1);
object test2 = args.GetValue(for_dimensions + 2);
value2 = Convert.ToInt32(test2);
Console.WriteLine(value1);
Console.WriteLine(value2);
}
if (value == testing)
{
Console.WriteLine("hi");
}
}
}
}
谢谢
【问题讨论】:
-
几个小时前已经问过并针对命令行解析器的问题...已删除并重新发布。知道这样做很烦人,尤其是花时间帮助的人。如果需要帮助,您应该改进最初的问题和/或等待更多帮助。
-
很抱歉,但是stackoverflow.com/questions/491595/… 这对我没有多大帮助,因为它对我目前所学的东西来说太复杂了,正如我之前所说的,我是新手,这个概念对我来说很难理解。
-
您应该使用标准化的google.com/search?q=github+c%23+commandline+parser,尤其是对于复杂的参数。
-
如果我创建一个将命令行参数作为输入的函数,但我将如何返回这些值?
标签: c# .net-core command-line command-line-arguments