【发布时间】:2017-09-21 20:06:23
【问题描述】:
有谁知道我如何通过 Lambda 表达式实现这样的目标?
public static string getString(char c, int lenght)
{
char[] temp = new char[lenght];
for (int i = 0; lenght > 0; lenght--, i++)
{
temp[i] = c;
}
return new string(temp);
}
这是我循环的一个小方法:
for (int i = 0, j = width; j > 0; j--, i++)
{
item[i] = getString((char)(value + 48), j);
Console.WriteLine(item[i]);
}
输出 1 - 9 之间数字的三角形。
例子:
666666
66666
6666
666
66
6
我从未使用过 Lambda,但想学习它来实现这样的小循环。
如果有人知道一个充满例子的地方,请指出方向。
【问题讨论】:
-
Lambda 表达式是廉价的匿名方法;它们不会替换循环。
-
你可以使用:Enumerable.Repeat("6", 6);
-
new string('6', 6)msdn.microsoft.com/en-us/library/xsa4321w(v=vs.110).aspx -
字符串构造函数是很好的信息,感谢 Mat,我睡不着,所以我在玩一些想法。尝试将字符串构造函数与 enumerable.repeat 结合起来,没有得到我期望的结果,但老实说,这是因为我不使用 Enumerable 方法,所以我不确定它们是如何完成工作的。这是我尝试过的 int i = 5; int j = i;char c = '6'; string[] str = Enumerable.Repeat
((new string(c, j--)), i).ToArray(); foreach(string s in str) { Console.WriteLine(s); } 我知道为什么它不起作用,不知道为什么我认为它可能哈哈,我猜是深夜