C# добавление значений в список внутри списка
Привет,
Я уже задавал этот вопрос раньше, однако не перефразировал его правильно. Поэтому позвольте мне задать этот вопрос еще раз.
У меня три класса.
Человеку - сохранить лицо атрибутами
public string Name { get; set; } public string Surname { get; set; } public int Age { get; set; } public List<Date> dates{ get; set; } = new List<Date>();
Дата-сохранение объекта dateTime
<pre> public class Date { public DateTime date { get; set; } }
listClass-основная функция: создание списка Класс person
public class listClass { public List<Person> People{ get; set; } = new List<Person>(); }
В моей основной форме у меня есть две кнопки AddPerson и AddDate то, чего я пытаюсь достичь, - это разрешить (выбрав дату из dateTimePicker) добавлять количество дат к одному объекту внутри списка персон, то есть один человек может иметь 2-3 даты.
Что я уже пробовал:
Я правильно добавил человека.
private void SaveDriver(object sender, EventArgs e) { Person p = new Person(); listClass list = new listClass(); p.Name = txtFirstName.Text; p.Surname = txtSurname.Text; p.Age = int.Parse(txtAge.Text); list.People.Add(p); }
Это работает правильно, он добавляет человека в список людей, который связан с Класс person
Чего я не знаю, так это как я предполагаю добавить в него количество дат, то есть у одного человека может быть 3 даты.
Я создал кнопку AddDate:
private void btnAddDate_Click_1(object sender, EventArgs e) { People p = new People(); Date d = new Date(); d.date = dtpDate.Value; //date time picker p.dates.Add(d); //trying to add the dates into the People list }
Я знаю, что последний бит кода неверен, потому что всякий раз, когда я нажимаю кнопку Добавить дату, он не добавляет дату из DateTimePicker в список "дата" в классе Person, так как же я предполагаю разрешить пользователю добавлять количество дат в объект person?
Заранее спасибо.
[no name]
Хорошо, так почему же вы не обновили свое предыдущее сообщение?
И до сих пор не ясно, почему вы думаете, что "последний бит кода неверен".
Member 13081540
Извините, в следующий раз я обновлю вопросы.
Я думаю, что это неправильно, потому что всякий раз, когда я нажимаю кнопку Добавить дату, она не добавляет эту дату в список "дата" в классе Person
[no name]
Я думаю, что он делает. Я полагаю, что ваша реальная проблема заключается в том, что вы не понимаете переменную область видимости.
Member 13081540
Вы на 100% правы, когда я добавлял утверждения и людей, переменные находились внутри определенных областей, а не объявлялись в верхней части формы.
[no name]
Да, и теперь вы создаете совершенно новых "людей", добавляя к ним, а затем выбрасываете все это, когда обработчик событий выходит.
Member 13081540
Хм, ладно. Тогда как же я не мог заставить все это "выбросить"?
CHill60
Есть что-то более неправильное, чем просто этот последний кусок кода!People p = new People()
? Имя класса listClasspublic List<Date> dates{ get; set; } = new List<Claim>();
создает недопустимый знак ошибка компиляции, а что Claim
... разве это не должно быть List<Date>
??
Member 13081540
Да, извините, это список & lt;Date & gt; dates{ get; set;} = new List< Date>();
CHill60
Что все равно приведет к ошибке компилятора недопустимого токена - вы не можете инициализировать такие свойства.
Member 13081540
Но People p = new People() используется для добавления новых людей в список< person> people в listClass
Даты используются для добавления количества дат внутри класса People в список, называемый List< date> dates
Ramza360
Это неверно CHill60, вы можете инициализировать свойства, используя этот синтаксис в C#.
CHill60
Какая версия C# это Рамза? Мой компилятор выдает ошибку "недопустимый токен' = 'в объявлении члена класса, структуры или интерфейса".
Конечно, если я изменю это свойство на инкапсулированное свойство с резервным полем вместо автоматического свойства, то, конечно, вы можете использовать этот синтаксис для инициализации поля.
Я использую VS2013, но я не уверен, что это когда-либо было по-другому
Ramza360
Это вещь VS 2015 (точнее, C# 6.0), но с VS 2015 Вы можете использовать некоторые из этих функций (включая эту) даже с c# 4.0.
CHill60
Справедливо. Я использую VS2013
Bryian Tan
Просто любопытно, где же люди? Я имею в виду класс :)