【发布时间】:2015-02-16 17:40:30
【问题描述】:
我惊讶地发现下面的代码不起作用:
private List<bool> _IsSet = new List<bool>();
public void ClearIsSet()
{
_IsSet.ForEach(x => x = false);
}
调用ClearIsSet 后,true 的值仍在列表中。
我知道我可以使用 for 循环使其工作。
有没有办法在没有for 循环的情况下完成这项工作?如果没有,为什么不呢?
编辑:
写完这个扩展函数,我没用过。
[Extension()]
public IList<T> ReplaceAll<T>(IList<T> Source, T Value)
{
IList<T> Replacement = Source.Select(x => Value).ToList();
Source.Clear();
Source.AddRange(Replacement);
return Source;
}
我刚用过:
_IsSet = _IsSet.Select(x => false).ToList()
因为Select 确实是ReplaceAll 在一个流畅的链中。
但是,你可以说:
_IsSet.ReplaceAll(false);
而Select 无法做到这一点,但ReplaceAll 中的代码似乎很麻烦。
【问题讨论】:
标签: .net generic-list