C#如何知道IEnumerable是否可变?

C#如何知道IEnumerable是否可变?,第1张

概述我想要一种方法来更新IEnumerable的某些条目.我发现,在克隆收集的背景中,对条目进行更新和更新值失败.这是因为我的IEnumerable支持一些LINQ-> SQL查询. 通过更改方法来获取列表我已经改变了这种行为,列表总是可变的,因此该方法会更改列表中的实际对象.而不是要求一个List被传递有一个Mutable接口我可以使用? // Will not behave as consiste 我想要一种方法来更新IEnumerable的某些条目.我发现,在克隆收集的背景中,对条目进行更新和更新值失败.这是因为我的IEnumerable支持一些liNQ-> SQL查询.

通过更改方法来获取列表我已经改变了这种行为,列表总是可变的,因此该方法会更改列表中的实际对象.而不是要求一个List被传递有一个Mutable接口我可以使用?

// Will not behave as consistently for all IEnumerables    public voID UpdateYesterday (IEnumerable<Job> jobs) {          foreach (var job in jobs.Where(x => x.date == Yesterday)) {             job.done = true;          }    }    ...    public class Job {           ...                    public DateTime Date { get; set; }    }
解决方法 你不是在这里改变列表 – 收藏本身可能是不可变的,这段代码仍然会“工作”.您正在更改集合中项目中的数据.

想象一排房子 – 这是非常不可改变的(创建或毁坏房子是棘手的),但你仍然可以改变这些房子的内容.

所以,你真正需要知道的是收集的元素是否要被克隆,无论你每次执行查询还是收集“新”作业,还是使用现有的对象.

总结

以上是内存溢出为你收集整理的C#如何知道IEnumerable是否可变?全部内容,希望文章能够帮你解决C#如何知道IEnumerable是否可变?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存