3

在 Java 中,我可以创建一个 List 并使用静态初始化程序立即填充它。像这样的东西:


List <String> list = new ArrayList<String>()
{{
    Add("a");
    Add("b");
    Add("c");
}}

这很方便,因为我可以动态创建列表,并将其作为参数传递给函数。像这样的东西:


printList(new ArrayList<String>()
{{
    Add("a");
    Add("b");
    Add("c");
}});

我是 C# 的新手,并试图弄清楚如何做到这一点,但我空空如也。这在 C# 中可能吗?如果是这样,怎么办?

4

3 回答 3

8

您可以使用集合初始化程序:

new List<string> { "a", "b", "c" }

这编译为对该方法的一系列调用Add
如果该Add方法采用多个参数(例如,字典),您需要将每个调用包装在一对单独的大括号中:

new Dictionary<string, Exception> {
    { "a", new InvalidProgramException() },
    { "b", null },
    { "c", new BadImageFormatException() }
}
于 2011-10-24T20:38:41.307 回答
2

因为C# 3.0你也可以这样做:

List <String> list = new List<String>
                     {
                             "a", "b", "c"
                     };

MSDN,集合初始化器

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

编辑:回答有关字典的评论

IDictionary<string, string> map = new Dictionary<string, string>
{
   { "Key0", "Value0" },
   { "Key1", "Value1" }
};
于 2011-10-24T20:38:32.040 回答
1

是的,这里在 MSDN 上有描述

于 2011-10-24T20:38:43.427 回答