不寻常的 C# 语法

问题描述 投票:0回答:1

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

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

    实例化

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

  2. 第一行后面

    { }
    中的内容是做什么的?如果它位于缺失的
    ()
    内部,那么它将传递一个对象作为
    CliRootCommand
    构造函数的参数,但情况并非如此

c# syntax
1个回答
1
投票

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

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

“扩展方法”部分有点酷,但这意味着如果您愿意,您可以将其硬塞到现有的 IEnumerable 类型上来做“有趣”的事情。

© www.soinside.com 2019 - 2024. All rights reserved.