首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有内部实例化的空列表上的扩展方法

具有内部实例化的空列表上的扩展方法
EN

Stack Overflow用户
提问于 2017-07-28 11:58:22
回答 1查看 84关注 0票数 1

我是否可以在可能为空的列表上使用扩展方法,如果是这样,则只在扩展方法内实例化它??

在扩展方法中实例化列表,该扩展方法应用于该列表...这听起来像是在用foreach循环在列表中添加或删除一个项目。

代码语言:javascript
复制
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?
}

然后像这样使用它:

代码语言:javascript
复制
//List<blabla> TeamWork comes from anywhere else, instantiated or not
TeamWork.AddOrUpdate(aPersonA);
TeamWork.AddOrUpdate(aPersonB);
DoSomething(Teamwork);
EN

回答 1

Stack Overflow用户

发布于 2017-07-28 12:01:15

不,这是行不通的,因为参数应该作为ref传递,并且不能将refthis关键字结合使用。

但是你总是可以做类似这样的事情:

代码语言:javascript
复制
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);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45364626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档