c#KeyedCollection如何初始化?

时间:2015-12-29 01:38:45

标签: c#

我正在阅读一些c#源代码。有些东西让我感到困惑。在下面的代码中,OptionSet继承自KeyedCollection类,当OptionSet初始化如下所示时,它会首先调用OptionSet()来获取新的但是空的OptionSet,然后调用Add()两次以插入{" h |?| help",v =>语法()}和{" analyzer =",v => analyzer = v}。

我想知道为什么会这样初始化,为什么要使用Add()?

var p = new OptionSet()
    {
        { "h|?|help", v => Syntax() },
        { "analyzer=", v => analyzer = v },
    }

public class OptionSet : KeyedCollection<string, Option>{
    public OptionSet ()
        {
        }
    public OptionSet Add (string prototype, Action<string> action){...}
    ...
    }

1 个答案:

答案 0 :(得分:1)

执行此操作时:

var p = new AnyCollection()
{
    ...
}

您正在使用Collection initializers

来自here

  

集合初始值设定项允许您指定一个或多个元素   初始化实现的集合类时的初始化程序   IEnumerable或具有Add扩展方法的类。元素   初始化器可以是简单的值,表达式或对象   初始化。通过使用集合初始值设定项,您不必   指定对源中类的Add方法的多次调用   的的代码;编译器添加了调用。