我有一个结构列表
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/