在 Java 中,我喜欢使用诸如
List<String> list = new ArrayList<String>() {{add("foo");}};
有没有办法在 C# 的 1 行中做到这一点?
在 Java 中,我喜欢使用诸如
List<String> list = new ArrayList<String>() {{add("foo");}};
有没有办法在 C# 的 1 行中做到这一点?
这称为集合初始化程序,它是 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 的网站免费下载。
我认为你想要的是一个数组初始化器
List<string> list = new List<string>() { "foo" };
多个项目应以逗号分隔
List<string> list = new List<string>() { "foo","bar","bas"};
您可以在 .NET 3.5 中设置属性值:
List<string> list = new List<string> () { Property = Value, Property2 = Value2 };
或者初始化一个数组:
List<string> list = new List<string> () { "value1", "value2" };
但是,您不能以这种方式调用方法。
如果您只需要处理将对象添加到集合中,那么集合初始化器工作得很好,但如果您需要执行更多静态初始化,您可以使用称为静态构造器的东西,它的工作方式与 java 中的静态初始化器相同
这格式很差,但似乎涵盖了它