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