【发布时间】:2021-12-18 02:36:15
【问题描述】:
使用 root 命令:
new RootCommand
{
new Option<string>("--myoption")
};
你是怎么区分的
./myapp
和
./myapp --myoption ""
?
我最初假设如果未指定该选项将为 null,但事实并非如此,它是一个空字符串 :( 添加显式默认值 null 也不起作用;此代码仍会打印出 @987654325 @当没有选项传入时:
static void Main(string[] args)
{
var rootCommand = new RootCommand
{
new Option<string>("--myoption", () => null)
};
rootCommand.Handler = CommandHandler.Create<string>(Run);
rootCommand.Invoke(args);
}
private static void Run(string myoption)
{
Console.WriteLine(myoption == null ? "(null)" : '"' + myoption + '"');
}
如果默认值设置为非空字符串,则默认值会按预期出现;只有null 神秘地变成了一个空字符串。
【问题讨论】:
标签: c# command-line-arguments system.commandline