一个简单的问题,关于foreach
我把问题简化了,问题模型如下
- C# code
List<int> lst=new List<int>(); lst.Add(1); lst.Add(3); lst.Add(5); lst.Add(7); //希望执行以下修改:如果整数大于3,则将整数增加10,否则保持不变。 lst.ForEach(c=>c=c>3?c+10); //得到的结果期望是lst的元素值:1,3,15,17
这里的元素只是一个整数类型,实际应用中元素是一个实体类型。
[解决办法]
list.Where(c => c > 3).ToList().ForEach(delegate(int i) { Console.WriteLine(i + 10); });
ForEach对 List 的每个元素执行指定操作,但并不能改变元素。
你要么就用for去改变元素
[解决办法]
foreach 的元素是只读的。
[解决办法]
貌似是因为是值类型的原因,如果是引用类型就可以
[解决办法]
[解决办法]
- C# code
List<int> lst = new List<int>(); lst.Add(1); lst.Add(3); lst.Add(5); lst.Add(7); //希望执行以下修改:如果整数大于3,则将整数增加10,否则保持不变。 //lst.ForEach(c=>c=c>3?c+10); //得到的结果期望是lst的元素值:1,3,15,17 List<int> lstTemp = new List<int>(); lst.ForEach(delegate(int argInt) { if (argInt > 3) lstTemp.Add(10 + argInt); else lstTemp.Add(argInt); });