我有一个很大的静态列表,它基本上是一个查找表,所以我用代码初始化了这个表。
private class MyClass
{
private class LookupItem
{
public int Param1 { get; set; }
public int Param2 { get; set; }
public float Param2 { get; set; }
public float Param4 { get; set; }
}
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
new LookupItem() { Param1 = 1, Param2 = 2, Param3 = 3 Param4 = 4 },
new LookupItem() { Param1 = 5, Param2 = 6, Param3 = 7 Param4 = 8 },
//etc
}
}
realLookupItem
有更多的属性,所以我添加了一个构造函数以允许更紧凑的初始化格式:
private class MyClass
{
private class LookupItem
{
public int Param1 { get; set; }
public int Param2 { get; set; }
public float Param2 { get; set; }
public float Param4 { get; set; }
public LookupItem(int param1, int param2, float param3, float param4)
{
Param1 = param1;
Param2 = param2;
Param3 = param3;
Param4 = param4;
}
}
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
new LookupItem(1, 2, 3, 4),
new LookupItem(5, 6, 7, 8),
//etc
}
}
我真正想做的是对对象本身使用集合初始化程序格式,这样我就可以摆脱new LookupItem()
每一行的。例如:
private static List<LookupItem> _lookupTable = new List<LookupItem>()
{
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
//etc
}
这可能吗?我喜欢认为这是因为KeyValuePair
a 的 'sDictionary<>
可以以这种方式初始化。
集合初始化器允许您在初始化实现 IEnumerable 的集合类时指定一个或多个元素初始化器。元素初始值设定项可以是简单值、表达式或对象初始值设定项。通过使用集合初始化器,您不必在源代码中指定对类的 Add 方法的多次调用;编译器添加调用。
这是否意味着我需要IEnumerable
在我的LookupItem
类上实现并返回每个参数?我的课不是收藏课。