我有一个结构列表

List<Student> studentList = new List<Student>()


我想找到一个特定的学生,然后更新它的信息。为此,我在方法中包含以下代码

Student tmpStudent = new Student();
tmpStudent.fName = txtFName.Text;
studentList.Find(i => i.fName == tmpStudent.fName).fName.Replace(tmpStudent.fName, "newName");


但问题是我们似乎没有用。当我显示结构列表的内容时,我仍然使用旧版本

string tmp = "";
foreach (Student s in studentList)
{
    tmp += s.fName + " " + s.lName + " " + s.Gpa.ToString() + "\n";
}
MessageBox.Show(tmp);


实现它的正确方法是什么?

谢谢

最佳答案

Replace不会对字符串进行“就地”替换-它会返回带有替换文本的新字符串。

您需要将返回的替换字符串分配回fName属性。

var foundStudent = studentList.Find(i => i.fName == tmpStudent.fName);
foundStudent.fName = foundStudent.fName.Replace(foundStudent.fName, "newName");


尽管第二行似乎过于冗长(您只需要分配新名称):

var foundStudent = studentList.Find(i => i.fName == tmpStudent.fName);
foundStudent.fName = "newName";

关于c# - 更新结构列表中的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4360809/

10-10 13:59