不寻常的 C# 语法

meg*_*man 1 c# syntax

我有一些我不明白的 C# 代码:

        CliRootCommand _outerCommand = new CliRootCommand
        {
            new CliCommand("inner")
            {
                new CliOption<string>("--optionOne"),
                new CliOption<string>("--optionTwo")
            }
        };
Run Code Online (Sandbox Code Playgroud)
  1. CliRootCommand _outerCommand = new CliRootCommand
    
    Run Code Online (Sandbox Code Playgroud)

    CliRootCommand实例化?的新实例 如果是,为什么它不需要()在最后(请注意,即使我添加了它,它的工作方式也完全相同())?

  2. { }第一行后面的内容有什么作用?如果它在丢失的内部(),那么它将传递一个对象作为构造函数的参数,CliRootCommand但情况并非如此

Joe*_*orn 5

这是一个集合初始值设定项

集合初始值设定项允许您在初始化实现 IEnumerable 并具有带有适当签名的 Add 作为实例方法或扩展方法的集合类型时指定一个或多个元素初始值设定项。

“扩展方法”部分有点酷,因为这意味着您可以将其猴子补丁到现有的 IEnumerable 类型上,以根据需要做“有趣”的事情。

至少从 2013 年开始,C# 就出现了这种情况,距今已有 10 年了。