Log*_*gan 9 c# ienumerable mutable
我想要一个方法来更新IEnumerable的某些条目.我发现在条目中做一个foreach并更新值失败,因为我在克隆集合的后台.这是因为我的IEnumerable得到了一些LINQ-> SQL查询的支持.
通过更改方法以获取List我已经更改了此行为,Lists总是可变的,因此该方法更改列表中的实际对象.而不是要求传递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; }
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 15
你根本就没有更改列表 - 集合本身可能是不可变的,这段代码仍然可以"正常工作".您正在更改集合中项目的数据.
想象一排房子 - 这是不可改变的(创造或摧毁房子是棘手的)但你仍然可以改变这些房屋的内容.
所以,你真正需要知道的是,集合的元素是否将被克隆......每次执行查询时是否会获得"新"作业的集合,或者它是否会使用现有的对象.
| 归档时间: |
|
| 查看次数: |
2640 次 |
| 最近记录: |