我有一个名为Machine
的{{1}}个对象的简单列表。我向它添加了2个新loadedMachines
个对象,第二个参数是Machine
属性。
machineName
出于某些原因,我的foreach循环正在输出"正在添加的机器是:"并且loadedMachines.Add(new Machine("0", "My cool Yaris", "Toyota"));
loadedMachines.Add(new Machine("1", "My sporty car", "Ferrari"));
foreach (Machine m in loadedMachines)
{
Console.WriteLine("Machine being added is: " + m.machineName);
}
似乎没有与我的机器对象连接。
这是什么原因?这是我的班级定义:
m.machineName
答案 0 :(得分:2)
在构造函数中,您需要从输入参数中分配属性,如下所示:
public Machine(string id, string machineName, string machineType)
{
Id = id;
this.machineName = machineName;
this.machineType = machineType;
}
作为旁注,您通常希望为参数使用与属性不同的名称。 Microsoft建议的命名标准使用大写的属性名称,因此代替public string machineName { set; get; }
,您将拥有public string MachineName { set; get; }
如果这样做,构造函数不需要在属性前加this
。
答案 1 :(得分:1)
您也可以使用属性初始值设定项而不是构造函数。像这样:
loadedMachines.Add(new Machine() {Id = "0", machineName = "My cool Yaris", machineType = "Toyota"});
当使用动态构造的对象(如实体)时,这种语法很常见,因为许多框架不支持在动态创建时使用参数调用构造函数。