添加3到列表中的所有整数而不用于循环c#

时间:2012-01-02 10:44:03

标签: c# list for-loop

我想在不使用for循环或foreach循环的情况下将3加到所有list<int>成员?我能在一行中做到吗?怎么样?

3 个答案:

答案 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();

    }