C# 修改列表中的对象
如何修改列表中不知道索引是什么的对象?关于修改对象,我发现的一切都是当您知道要更改的索引时。因此,在下面的代码中,它将用新的ServiceRequest“r”替换索引0处的ServiceRequest(至少我认为会)。但是,如果您不确定用户将选择更改什么索引,该怎么办C# 修改列表中的对象,c#,list,C#,List,如何修改列表中不知道索引是什么的对象?关于修改对象,我发现的一切都是当您知道要更改的索引时。因此,在下面的代码中,它将用新的ServiceRequest“r”替换索引0处的ServiceRequest(至少我认为会)。但是,如果您不确定用户将选择更改什么索引,该怎么办 public class ManagementSystem { List<ServiceRequest> Requests = new List<ServiceRequest>(); pub
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;
}
}
公共班级管理系统
{
列表请求=新列表();
公共无效CreateRequest(ServiceRequest r)
{
请求。添加(r);
}
公共无效删除请求(ServiceRequestr)
{
请求。删除(r);
}
公共无效修改请求(ServiceRequestr)
{
请求[0]=r;
}
}
您应该能够使用:
Requests.IndexOf(r) //r being the object you want to modify
要获得要修改的对象的索引,然后从中计算出其余的索引如果要更新
列表中的项目
,首先必须找到该项目和列表,然后替换
例如:
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(r)
获取索引。请注意,.IndexOf
将找到相同的项。默认情况下,这是具有相同引用的项。同时,如果你有一个对象的引用,你可以不用这个方法修改它。@Alex哦,不,你已经有一个引用了。此外,您不能对引用类型使用ref
。描述你期望的行为。这个ModifyRequest
应该做什么?@YeldarKurmangaliyev有一个方法可以创建一个ServiceRequest并将其添加到列表中。此ServiceRequest有3个参数:名称、ID号和描述。我将所有3个参数都作为字符串。ModifyRequest允许用户更改一个或多个参数(如果需要)。@Alex允许用户更改一个或多个参数。您将如何确定要修改的请求?凭身份证?如果是,则Arghya C的回答是正确的。