在一行中使用for循环设置int?

时间:2017-09-22 20:19:26

标签: c#

我有兴趣做这样的事情(C#):

int sum = 0;
for (int i = 0; i < 5; i++)
     sum += i;

但我想在一条线上做。类似的东西:

int sum = (embedded loop)

有没有办法在一条线上做到这一点?我希望将其应用于更复杂的字符串操作算法,因此我不能简单地用算术公式替换循环。

3 个答案:

答案 0 :(得分:2)

所以你想循环并在一行中做某事

首先,将它写在一行并不会让它运行得更快。你仍然会循环,你仍然是O(n)。对于您在问题中遇到的特定问题,您可以执行以下操作:

var sum = Enumerable.Range(0,5).Sum();

这基本上会产生数字0,1,2 ... 4的集合并将它们相加。

更一般地说,由于你想要某些东西,你可以使用Aggregate函数。例如:

var str = Enumerable.Range(0,5).Aggregate("",(p,c) => p + c); // Note: not efficient at all

将取值0,1,... 4并与它们进行字符串连接(使用字符串构建器会更好)为您提供字符串01234

修改

  

我试图遍历一个单词列表并使每个标题都成为案例,然后返回字符串[]。join(&#34;&#34;)

在这种情况下,例如:

var result = string.Join(" ", myListOfWords.Select(w => char.ToUpper(w[0]) + w.Substring(1)));

应该可以正常工作。

答案 1 :(得分:1)

如果你不介意'sum'只在for循环的范围内,你可以这样做:

for (int i = 0, sum = 0; i < 5; sum += i, ++i) { // do something }

答案 2 :(得分:0)

for(int i=0,sum = 0; i<5; sum+=i,++i){}