У меня есть следующая проблема: у меня есть список строк. У меня также есть класс со строковым свойством Name и конструктор для класса, который принимает строку в качестве своего одного аргумента. Таким образом, я могу создать список объектов, итерации по списку строк.Динамическое изменение значений списка в C#
Теперь я хотел бы изменить свойство Name одного из этих объектов и в результате обновить исходный список строк автоматом. Это возможно? Я не могу предположить, что список строк имеет уникальные значения. Вот некоторые основные код, который не решить мою проблему, но, надеюсь, иллюстрирует то, что мне нужно сделать:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
List<string> nameList = new List<string>(new string[] {"Andy", "Betty"});
List<Person> personList = new List<Person>();
foreach (string name in nameList)
{
Person newPerson = new Person(name);
personList.Add(newPerson);
}
foreach (Person person in personList)
{
Console.WriteLine(person.Name);
}
/* Note: these next two line are just being used to illustrate
changing a Person's Name property. */
Person aPerson = personList.First(p => p.Name == "Andy");
aPerson.Name = "Charlie";
foreach (string name in nameList)
{
Console.WriteLine(name);
}
/* The output of this is:
Andy
Betty
Andy
Betty
but I would like to get:
Charlie
Betty
Andy
Betty
}
public class Person
{
public string Name;
public Person(string name)
{
Name = name;
}
}
}
Можно ли предложить наилучший подход к этой проблеме?
Есть ли причина, по которой вам нужно обновить исходный список, если вы можете просто перебрать «Список», чтобы получить последние имена? –
Steve
Вы имеете в виду выход должен быть Чарли Бетти Энди Бетти –
Это странно, хотя код должен работать. –