修改列表中的对象
本文关键字:对象 列表 修改 | 更新日期: 2023-09-27 18:21:14
如何修改List中不知道索引是什么的对象?当您知道要更改的索引时,我所发现的关于修改对象的一切都已存在。因此,在下面的代码中,它将用新的ServiceRequest"r"替换索引0处的ServiceRequest(至少我认为它会这样做)。但是,如果您不确定用户将选择更改什么索引,该怎么办?
public class ManagementSystem
{
List<ServiceRequest> Requests = new List<ServiceRequest>();
public void CreateRequest(ServiceRequest r)
{
Requests.Add(r);
}
public void DeleteRequest(ServiceRequest r)
{
Requests.Remove(r);
}
public void ModifyRequest(ServiceRequest r)
{
Requests[0] = r;
}
}
如果要更新List<T>
中的项目,首先必须找到该项目和列表,然后进行替换。
示例:
public void ModifyRequest(ServiceRequest r)
{
var req = Requests.FirstOrDefault(rs => rs.SomeProperty.Equals(r.SomeProperty));
if (req != null)
{
var idx = Requests.IndexOf(req);
Requests[idx] = r;
}
}
在这里,我假设Request
类具有属性SomeProperty
,基于此,您将在列表中找到匹配的Request
对象。
注意
var index = Requests.IndexOf(r);
只有当列表中的项目与r
是同一对象时,才会给出非负(有效)索引。他们必须有相同的参考IndexOf()
才能工作。
您应该能够使用:
Requests.IndexOf(r) //r being the object you want to modify
要获得要修改的对象的索引,然后从中计算出其余的