我只是声明一个从linq到sql类创建的表的类列表,并直接为它们赋值,我想这是很多代码。如果有办法我可以减少它,请告诉我。
我的代码
List<className> obj = new List<className>() { new className { field1 = value1; field2 = value2}, new className { field 1 = value1}...;
答案 0 :(得分:2)
在这种情况下,我建议在你的类中使用一个多参数构造函数 - 这样可以避免在对象创建过程中逐字段赋值。
例如,类声明可能是:
class MyClass
{
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public string Field4 { get; set; }
public MyClass()
{ }
public MyClass(string f1, string f2, string f3 ,string f4)
{
Field1 = f1;
Field2 = f2;
Field3 = f3;
Field4 = f4;
}
}
然后使用以下代码初始化List<>
:
List<MyClass> objects = new List<MyClass>()
{
new MyClass("f1", "f2", "f3", "f4"),
new MyClass("f1", "f2", "f3", "f4")
};
您可以根据需要为每个field
提供值。
答案 1 :(得分:1)
只想展示“清洁”集合初始化的方式
var items = new List<MyClass>
{
new MyClass
{
Field1 = "1value1",
Field2 = "1value2",
Field3 = "1value3",
Field4 = "1value4"
},
new MyClass
{
Field1 = "2value1",
Field2 = "2value2",
Field3 = "2value3",
Field4 = "2value4"
}
};
使用上述方法,您可以初始化实例,而无需为所有属性提供值 格式化将使您不受构造函数参数的约束。
我认为,构造函数不应仅用于节省编写代码的数量 构造函数是类型契约的一部分 - 它告诉消费者该类需要设置所有属性才能正常工作。