我是否可以在可能为空的列表上使用扩展方法,如果是这样,则只在扩展方法内实例化它??
在扩展方法中实例化列表,该扩展方法应用于该列表...这听起来像是在用foreach循环在列表中添加或删除一个项目。
public static void AddOrUpdate(this List<blabla> i, Person p)
{
i = i ?? new List<blabla>(); //Is it OK no instantiate inside?
i.RemoveAll(t => t.Id == p.Id && t.Role == RoleEnum.Admin);
i.Add(p); //Since it is a reference type, I dont need to return it (even "this" parameter) right?
}然后像这样使用它:
//List<blabla> TeamWork comes from anywhere else, instantiated or not
TeamWork.AddOrUpdate(aPersonA);
TeamWork.AddOrUpdate(aPersonB);
DoSomething(Teamwork);发布于 2017-07-28 12:01:15
不,这是行不通的,因为参数应该作为ref传递,并且不能将ref与this关键字结合使用。
但是你总是可以做类似这样的事情:
public static List<blabla> AddOrUpdate(this List<blabla> i, Person p)
{
i = i ?? new List<blabla>();
i.RemoveAll(t => t.Id == p.Id && t.Role == RoleEnum.Admin);
i.Add(p);
return i;
}
TeamWork = TeamWork.AddOrUpdate(aPersonA);
TeamWork = TeamWork.AddOrUpdate(aPersonB);
DoSomething(Teamwork);https://stackoverflow.com/questions/45364626
复制相似问题