【发布时间】:2020-01-15 06:06:06
【问题描述】:
我正在尝试将命令行参数转换为不同的格式。例如,如果我要获取特定用户,它会是GetUser=UserName,但我也有不需要等号的方法,例如GetAllUsers。现在我正在拆分=,但我不需要对所有命令都这样做。我尝试将其设置为条件,如果检测到=,它将分裂,否则它将仅将参数作为字符串,但我得到Cannot implicitly convert type 'string' to 'System.Collections.Generic.Dictionary<string, string>
代码:
public static Dictionary<string, string> ParseArgs(string[] args)
{
Dictionary<string, string> results = new Dictionary<string, string>();
foreach (string arg in args)
{
string[] parts = arg.Split('=');
if (parts.Length > 1)
{
results[parts[0]] = parts[1];
continue;
}
else
{
results = Convert.ToString(arg);
}
}
return results;
}
【问题讨论】:
-
results = Convert.ToString(arg);想想这条线在做什么,results的类型是什么,以及为什么会出现问题。 -
查看
CommandLineParser库。 Git在这里-github.com/commandlineparser/commandline。它使解析命令行参数变得更加简单。您当前面临的问题是尝试将字符串分配给字典类型。那显然行不通。您可能可以使用results.Add(arg, arg)使键与值相同,但这对我来说简直是意大利面条。你最好使用正确的工具来完成这项工作。 -
您可以将
if/else替换为results[parts[0]] = parts.Length > 1 ? parts[1] : ""; -
效果很好@RufusL,谢谢