Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未正确返回C#对象变量_C#_List_Oop_Object - Fatal编程技术网

未正确返回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,你是对的,在盯着屏幕看了好几个小时后犯了一个愚蠢的错误!