gpt4 book ai didi

c# - 为什么将 List 的参数重构为 IEnumerable

转载 作者:太空狗 更新时间:2023-10-29 17:31:19 31 4
gpt4 key购买 nike

我有一个看起来像这样的方法:

    public void UpdateTermInfo(List<Term> termInfoList)
{
foreach (Term termInfo in termInfoList)
{
UpdateTermInfo(termInfo);
}
m_xdoc.Save(FileName.FullName);
}

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

最佳答案

其他答案指出,通过选择“更大”的类型,您可以让更多的来电者给您打电话。这本身就是进行此更改的充分理由。但是,还有其他原因。我建议您进行此更改,因为当我看到采用列表或数组的方法时,我首先想到的是“如果该方法试图更改我的列表/数组中的项目怎么办?”

您需要存储桶的内容,但您不仅需要存储桶,还需要更改其内容的能力。如果你不打算使用那个能力,你为什么需要那个?当你说“这个方法不能采用任何旧序列;它必须采用一个由整数索引的可变列表”时,我认为你是在对调用者提出这个要求因为你'我们将利用这种力量

如果“我打算弄乱你的数据结构”不是你打算与方法的调用者沟通的内容,那么就不要沟通。采用序列的方法传达“我要做的最多就是按顺序从这个序列中读取”。

关于c# - 为什么将 List<Term> 的参数重构为 IEnumerable<Term>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8489375/

31 4 0