我可以在可能为null的列表上使用扩展方法吗?如果是这种情况,那么只需在Extension方法内实现它吗?
列出适用于它的扩展方法中的列表...听起来就像当你尝试在列表中添加或删除你正在使用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);
答案 0 :(得分:3)
不,这不起作用,因为参数应该作为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);