加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么重新引用List的IEnumerable参数?

发布时间:2020-12-15 06:34:50 所属栏目:百科 来源:网络整理
导读:我有一个如下所示的方法: public void UpdateTermInfo(ListTerm termInfoList) { foreach (Term termInfo in termInfoList) { UpdateTermInfo(termInfo); } m_xdoc.Save(FileName.FullName); } Resharper建议我将方法签名更改为IEnumerable Term而不是List
我有一个如下所示的方法:
public void UpdateTermInfo(List<Term> termInfoList)
    {
        foreach (Term termInfo in termInfoList)
        {
            UpdateTermInfo(termInfo);
        }
        m_xdoc.Save(FileName.FullName);
    }

Resharper建议我将方法签名更改为IEnumerable< Term>而不是List< Term>.这样做有什么好处?

解决方法

其他答案指出,通过选择“较大”类型,您可以允许更广泛的呼叫者呼叫您.这是一个足够的理由来做这个改变.不过还有其他原因.我建议您进行此更改,因为当我看到一个方法可以使用列表或数组时,我认为的第一件事是“如果该方法尝试更改列表/数组中的项目怎么办?

你想要一个桶的内容,但你不仅要求桶,还要求更改其内容的能力.如果你不会使用这种能力,你为什么要这样做?当你说“这个方法不能采取任何旧的序列;它必须采取一个可变的列表被整数索引”我认为你正在对呼叫者做这个要求,因为你将利用这个权力.

如果“我打算搞乱你的数据结构”不是你打算与方法的呼叫者进行通信,那么不要通信.采用序列的方法通信“我最想做的是从这个顺序读取”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读