未正确返回C#对象变量
我有一个名为未正确返回C#对象变量,c#,list,oop,object,C#,List,Oop,Object,我有一个名为loadedMachines的Machine对象的简单列表。我向它添加了两个新的Machine对象,第二个参数是machineName属性 loadedMachines.Add(new Machine("0", "My cool Yaris", "Toyota")); loadedMachines.Add(new Machine("1", "My sporty car", "Ferrari")); foreach (Machine m in loadedMachines) {
loadedMachines
的Machine
对象的简单列表。我向它添加了两个新的Machine
对象,第二个参数是machineName
属性
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);
}
出于某些原因,我的foreach循环正在输出“正在添加的机器是:”并且m.machineName
似乎没有与我的机器对象链接
原因是什么?以下是我的类定义:
public class Machine
{
public Machine() { }
public string Id { get; set; }
public string machineName { set; get; }
public string machineType { set; get; }
public string category { set; get; }
public string make { set; get; }
public string modelNumber { set; get; }
public string information { set; get; }
public string ownersManualLocation { set; get; }
public string safetyChecklistSchedule { set; get; }
public string maintenanceService { set; get; }
public DateTime registrationExpiry { set; get; }
public Machine(string id, string machineName, string machineType)
{
}
}
在构造函数中,需要从输入参数分配属性,如下所示:
public Machine(string id, string machineName, string machineType)
{
Id = id;
this.machineName = machineName;
this.machineType = machineType;
}
loadedMachines.Add(new Machine() {Id = "0", machineName = "My cool Yaris", machineType = "Toyota"});
作为旁注,您通常希望为参数使用与属性不同的名称。Microsoft建议的命名标准使用大写的属性名称,因此您将使用公共字符串machineName{set;get;}
,而不是公共字符串machineName{set;get;}
如果这样做,则构造函数不需要在属性前面加上
this
前缀,还可以使用属性初始值设定项而不是构造函数。大概是这样的:
public Machine(string id, string machineName, string machineType)
{
Id = id;
this.machineName = machineName;
this.machineType = machineType;
}
loadedMachines.Add(new Machine() {Id = "0", machineName = "My cool Yaris", machineType = "Toyota"});
这种语法在使用动态构造的对象(如实体)时很常见,因为许多框架不支持在动态创建时使用参数调用构造函数。您的构造函数不会对您提供的参数执行任何操作,因此,
machineName
永远不会被设置为值。哇,我太傻了。我需要一个this.machineName=machineName
谢谢Spencer为什么这被否决了?谢谢John,你是对的,在盯着屏幕看了好几个小时后犯了一个愚蠢的错误!