2015-08-07 2 views
0

У меня есть некоторые проблемы для создания объекта struct в цикле for. У меня есть UserData Struct:Создание структурных объектов в цикле for

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>(); 
    } 

}

Таким образом, в другом классе я пытаюсь сделать список моих 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 объект. Где моя проблема, вы можете помочь? Thanks

+0

Это потому, что вы перезаписать содержимое пользовательских данных на каждом цикле с новым списком. – Logarr

+0

Спасибо, но как могу ли я его решить? – hamillton123

+0

Вам действительно нужно посмотреть, как использовать списки, но на первой итерации вы должны создать список, а после этого добавить в список – holroy

ответ

0

Вы должны добавить объекты к списку, используя метод Add. В настоящее время вы перезаписать список, поставив новый список в пользовательских данных

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.

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(); 
} 
+0

@ hamillton123 это помогло? или любой другой ответ в качестве выбранного ответа (зеленая проверка). –

Смежные вопросы