Как заполнить новый объект списка в C# значениями

#c#

Вопрос:

У меня есть объект телефона в C#, который возвращается (дом, работа и номер телефона) Мне нравится заполнять этими значениями другой объект, в котором есть список телефонов с номером и типом. Я пишу этот код:

«patientUpdateInfo.phone» — это объект, который я заполняю в телефоне:

 private List<PhoneUpdateInfo> phones { get; set; } = new List<PhoneUpdateInfo>();

if (patientbyId.home_phone != null)
  { 
    foreach (var phone in phones)
    {
        phone.Number = patientbyId.home_phone;
        phone.Type = PhoneType.Home;
        patientUpdateInfo.Phones.Add(phone);
    }
}
 

и это в объекте PhoneUpdateInfo:

 public class PhoneUpdateInfo
{
    public PhoneUpdateInfo()
    {
        Type = Data.PhoneType.Home;
    }
    public Data.PhoneType Type { get; set; }
    public string Number { get; set; }
}
 

моя проблема заключается в следующей строке: foreach (var телефон в телефонах) поскольку объект телефона пуст( Новый объект), он не входит внутрь, чтобы заполнить объект, он пройдет цикл foreach. Что мне делать?

Ответ №1:

Проблема в том, что вы только создали новый список, но не поместили в него никаких данных. Это как если бы вы получили коробку для игрушек, но на самом деле вы не положили в нее никаких игрушек. Итак, ваш список-это коробка, теперь вам просто нужно поместить игрушки (экземпляры объектов) в свой список.

Существует множество способов сделать это, но это два простых способа.

1 — Инициализация списка значениями:

 List<PhoneUpdateInfo> phones { get; set; } = new List<PhoneUpdateInfo>() 
{ 
    new PhoneUpdateInfo(), //first element
    new PhoneUpdateInfo(),  //second element
    AnyObjectAlreadyInstantiated //third element
};
 

2 — Добавление элемента в список с помощью List.Add()

 void SomeMethod()
{
    List<PhoneUpdateInfo> phones { get; set; } = new List<PhoneUpdateInfo>();
    phones.Add(new PhoneUpdateInfo());
    
    var instance = new PhoneUpdateInfo();
    phones.Add(instance);
}
 

Ответ №2:

Похоже, ты подходишь к этому задом наперед. В настоящее время вы пытаетесь выполнить цикл по пустому списку и повторно добавить в него одну и ту же информацию. Даже если бы в списке были записи patientbyId и PhoneType.Home они не менялись на протяжении всего цикла, вы бы просто перезаписали все эти записи одной и той же новой записью.

Вместо этого, похоже, вы просто хотите создать один объект из этой информации и добавить его в список. Что-то вроде этого:

 if (patientbyId.home_phone != null)
{
    var phone = new PhoneUpdateInfo();
    phone.Number = patientbyId.home_phone;
    phone.Type = PhoneType.Home;
    phones.Add(phone);
}