在C#中解析命令行参数的最佳方式:从手动解析到现成库
大家好!我是C#新手,正在编写一个需要从命令行接收参数的console应用程序。例如,用户像这样运行程序:
```
MyApp.exe --input file.txt --output result.txt --verbose
```
目前我通过`for`循环和`switch`手动解析`args`,但代码变得很糟糕:大量嵌套的if-else,难以添加新flag,而且如果用户传递`--input`而没有值,程序会抛出异常。以下是我的代码:
```csharp
static void Main(string[] args)
{
string input = null;
string output = null;
bool verbose = false;
for (int i = 0; i < args.Length; i++)
{
switch (args[i])
{
case "--input":
input = args[++i]; // 如果没有下一个参数——Exception
break;
case "--output":
output = args[++i];
break;
case "--verbose":
verbose = true;
}