在for循环中创建struct对象

时间:2015-08-07 22:41:58

标签: c#

我有一些麻烦在for循环中创建一个struct对象。 我有一个UserData Struct:

  public struct UserData
{
     public string userID { get; set; }

     public string userProjects { get; set; }
     public string userAccess { get; set; }
    //private List<UserData> list;
    public UserData(string id,string project,string access):this()
    {
        this.userID = id;

        this.userProjects = project;
        this.userAccess = access;
      //  list = new List<UserData>();
    }

}

所以在另一个类中,我尝试在for循环中创建一个UserData Struct列表:

Class ReadUserData
{
  private List<UserData> userdata;
  for (int j = 0; j < 4 ; j++)
        {
            userdata = new List<UserData>() { new  
              UserData(userID[j.ToString()],
              userProject[j.ToString()], 
              useraccess[j.ToString()]) };
        }

        var firstuser = userdata.FirstOrDefault();
}

我的问题是userData对象的计数是1.它只创建1个对象。 你能解决我的问题在哪里? 感谢

2 个答案:

答案 0 :(得分:0)

您必须使用Add方法将对象添加到列表中。目前,您通过将新列表添加到userdata

来覆盖列表
Class ReadUserData
{
  private List<UserData> userdata = new List<UserData>();// create empty list


  for (int j = 0; j < 4 ; j++)
        {
            userdata.Add(new  
              UserData(userID[j.ToString()],
              userProject[j.ToString()], 
              useraccess[j.ToString()])); // add objects to the list at each iteration
        }

        var firstuser = userdata.FirstOrDefault();
}

More about List How to Add.

答案 1 :(得分:0)

您正在创建一个包含一个项目的新List<UserData>,然后您将分配给userdata个对象。你在每次迭代中反复这样做,这就是原因。

请改为尝试(在循环外创建列表,并一次Add一项

Class ReadUserData
{
  private List<UserData> userdata = new List<UserData>();

  for (int j = 0; j < 4 ; j++)
        {
              userdata.Add( new  
              UserData(userID[j.ToString()],
              userProject[j.ToString()], 
              useraccess[j.ToString()]) );
        }

        var firstuser = userdata.FirstOrDefault();
}