在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#中吗?如果是这样,怎么办呢?
答案 0 :(得分:8)
您可以使用集合初始值设定项:
new List<string> { "a", "b", "c" }
这会编译为对Add
方法的一系列调用
如果Add
方法接受多个参数(例如,字典),则需要将每个调用包装在一对单独的大括号中:
new Dictionary<string, Exception> {
{ "a", new InvalidProgramException() },
{ "b", null },
{ "c", new BadImageFormatException() }
}
答案 1 :(得分:2)
自C# 3.0
以来你也可以这样做:
List <String> list = new List<String>
{
"a", "b", "c"
};
集合初始值设定项允许您指定一个或多个元素 初始化实现的集合类时的初始化程序 IEnumerable的。元素初始值设定项可以是一个简单的值,即 表达式或对象初始值设定项。通过使用集合初始化程序 您不必指定多次调用Add方法 您的源代码中的类;编译器添加了调用。
编辑:回答有关词典的评论
IDictionary<string, string> map = new Dictionary<string, string>
{
{ "Key0", "Value0" },
{ "Key1", "Value1" }
};
答案 2 :(得分:1)
是的,它已在MSDN here
上描述