我想在不使用for循环或foreach循环的情况下将3加到所有list<int>
成员?我能在一行中做到吗?怎么样?
答案 0 :(得分:14)
我无法想到会修改列表中所有元素的任何内容,但使用LINQ可以轻松创建 new List<int>
:
var plusThree = originalList.Select(x => x + 3).ToList();
或LINQ之前(效率稍高,但List<T>
更具特异性):
var plusThree = originalList.ConvertAll(x => x + 3);
但是这两个都将在幕后循环。
您可能会创建一个投影IList<T>
实施,懒惰地应用投影(或者如果您想真正想要的话可能是双射)......但这将是大量的工作
答案 1 :(得分:4)
你必须更改列表本身的值,所以没有其他方法可以在for循环中执行它,除非你被允许创建一个新的列表,然后你可以使用Linq(它会循环进入它)自己的代码)。
for(int i = 0; i < list.Count; i++) list[i]+=3;
答案 2 :(得分:0)
另一种方法(当然,感觉就像编写foreach循环而不实际编写它)
static void Main(string[] args)
{
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
int k = 0;
list.ForEach(delegate(int i) { list[k++] = i+3; });
foreach (var item in list)
{
Console.WriteLine(item.ToString());
}
Console.ReadKey();
}