2

在 Java 中,我喜欢使用诸如

List<String> list = new ArrayList<String>() {{add("foo");}};

有没有办法在 C# 的 1 行中做到这一点?

4

4 回答 4

8

这称为集合初始化程序,它是 C# 3.0 的一部分。

除了列表之外,您还可以初始化更复杂类型的集合,只要它们实现 IEnumerable 并为集合初始化程序中的每个元素提供适当的 Add 方法。例如,您可以使用如下Add(key, value)方法Dictionary<TKey, TValue>

var dict = new Dictionary<string, int> 
{ 
    {"first", 10 }, 
    {"second", 20 }
};

更多细节可以在 C# in Depth 的第 8 章中找到,可以从Manning 的网站免费下载。

于 2009-02-11T07:19:16.733 回答
6

我认为你想要的是一个数组初始化器

List<string> list = new List<string>() { "foo" };

多个项目应以逗号分隔

List<string> list = new List<string>() { "foo","bar","bas"};
于 2009-02-11T07:07:26.327 回答
2

您可以在 .NET 3.5 中设置属性值:

List<string> list = new List<string> () { Property = Value, Property2 = Value2 };

或者初始化一个数组:

List<string> list = new List<string> () { "value1", "value2" };

但是,您不能以这种方式调用方法。

于 2009-02-11T07:04:46.083 回答
0

如果您只需要处理将对象添加到集合中,那么集合初始化器工作得很好,但如果您需要执行更多静态初始化,您可以使用称为静态构造器的东西,它的工作方式与 java 中的静态初始化器相同

格式很差,但似乎涵盖了它

于 2009-02-11T07:20:26.247 回答