gpt4 book ai didi

c# - 如何判断扩展方法是否影响 'this'?

转载 作者:太空狗 更新时间:2023-10-30 00:55:57 27 4
gpt4 key购买 nike

我知道 String 扩展方法返回一个 String 并且实际上不会影响调用扩展方法的变量(因此它是不可变的)——但我如何判断其他扩展方法是否会影响?例如,我正在使用 List<NewsItem> - 我需要按日期降序排列这个列表,所以我写了这段代码:

newsItems.OrderByDescending(o => o.Date);

这会影响 newsItems 列表还是只是返回 IOrderedEnumerable?

换句话说,上面的代码实际上应该是:

newsItems = newsItems.OrderByDescending(o => o.Date).ToList();

??

谢谢,

最佳答案

OrderByDescending IEnumerable<T> 上的扩展方法,它本身提供只读 访问权限。当然,扩展方法可以转换List<T>。 ,但基本上没有 LINQ to Objects 扩展方法会影响它们的目标(当然,假设目标不受迭代影响)。

LINQ 采用函数式风格设计 - 方法返回数据的新 View ,而不是更改调用它们的目标。

编辑:正如 drew 所指出的,[Pure] attribute 可以用作指示,一些工具会使用它。然而:

  • 您仍然需要相信 [Pure]属性已正确应用
  • 判断是否 [Pure] 并不总是那么容易属性(例如,它没有出现在我链接到的文档中)
  • 如果您对它的作用没有信心,您可能应该阅读任何您调用的文档

关于c# - 如何判断扩展方法是否影响 'this'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8940304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com