【发布时间】:2012-12-01 14:48:42
【问题描述】:
只是我正在调查的一个好奇心。
问题:简单地重复(相乘,有人会说)一个字符串/字符 n 次。
我知道有 Enumerable.Repeat 来实现这个目标,但我试图在没有它的情况下做到这一点。
LINQ 在这种情况下似乎毫无用处,因为在像
from X in "s" select X
字符串“s”正在被探索,所以X是一个char。 扩展方法也是如此,因为例如 "s".Aggregate(blablabla) 将再次只作用于字符 's',而不是字符串本身。为了重复字符串,需要一些“外部”的东西,所以我认为 lambdas 和 delegates,但如果不声明一个变量来分配委托/lambda,就无法完成表达到。
所以像定义一个函数并内联调用它:
( (a)=>{return " "+a;} )("a");
或
delegate(string a){return " "+a}(" ");
会给出“无名”错误(因此 没有递归,AFAIK,即使通过可能的 lambda/delegate 作为 参数 传递),最后由于其局限性,甚至无法由 C# 创建。
可能是我从错误的角度看待这件事。有什么想法吗?
这只是一个实验,我不关心表演,不关心内存使用......只是它是一条线并且有点自主。也许有人可以使用 Copy/CopyTo 做某事,或者将其投射到其他集合中,我不知道。 反思也被接受。
【问题讨论】:
-
几乎;我想避免 enumerable.repeat
-
你读过那个帖子的答案了吗?它使用字符串构造函数,而不是
Enumerable.Repeat。 -
它重复一个字符,好吧,但是一个字符串
-
我在下面添加了一个会重复字符串的答案。
标签: c#-4.0