对象列表不存储项目且不显示任何内容

时间:2018-03-26 16:33:37

标签: c# list object

我试图创建一个Computer对象来保存存储在列表中的数据,当我尝试查看没有输出数据的任何数据时...

我创建的对象是这样的:

class Computer
{
    string companyName;
    string locationName;
    string serverName;
    string deviceName;
    string lastOnline;

    public Computer(string companyName, string locationName, string serverName, 
        string deviceName, string lastOnline)
    {
        this.companyName = companyName;
        this.locationName = locationName;
        this.serverName = serverName;
        this.deviceName = deviceName;
        this.lastOnline = lastOnline;
    }

    public string CompanyName { get; set; }    
    public string LocationName { get; set; }    
    public string ServerName { get; set; }    
    public string DeviceName { get; set; }
    public string LastOnline { get; set; }
}

我将列表初始化为:

List<Computer> computerList = new List<Computer>();

对于测试,我在列表中添加了五个项目:

computerList.Add(new Computer("Hello", "World", "Test", "Machine", "2-12-13"));
computerList.Add(new Computer("Hello", "World", "Test", "Machine", "2-12-13"));
computerList.Add(new Computer("Hello", "World", "Test", "Machine", "2-12-13"));
computerList.Add(new Computer("Hello", "World", "Test", "Machine", "2-12-13"));
computerList.Add(new Computer("Hello", "World", "Test", "Machine", "2-12-13"));

并输出我使用的项目:

foreach (var author in computerList)
{
    Console.WriteLine("Test : {0}", author.LastOnline);
}

任何人都可以看到为什么我没有输出除了:

  

测试:
  测试:
  测试:
  测试:
  测试:

2 个答案:

答案 0 :(得分:2)

您正在设置私有变量,因此公共属性仍具有默认值。

只需修改构造函数即可设置公共属性:

public Computer(string companyName, string locationName, string serverName, string deviceName, string lastOnline)
        {
            this.CompanyName = companyName;
            this.LocationName = locationName;
            this.ServerName = serverName;
            this.DeviceName = deviceName;
            this.LastOnline = lastOnline;
        }

答案 1 :(得分:1)

您的属性设置不正确,如评论中所述。尝试这两个中的一个并删除您拥有的属性和访问方法。

1:

public string CompanyName { get; set; }

2:

private string _companyName;

public string CompanyName
{
    get { return _companyName; }
    set { _companyName = value; }
}

修改

或者如其他答案中所述,修复构造函数以指向属性而不是局部变量。你应该删除你的局部变量,以免混淆。