如何在 C# 中创建整数序列?
F# 具有允许创建序列的序列:
seq { 0 .. 10 }
创建从 0 到 10 的数字序列。C
# 中有类似的东西吗?
F# has sequences that allows to create sequences:
seq { 0 .. 10 }
Create sequence of numbers from 0 to 10.
Is there something similar in C#?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
您可以使用
Enumerable.Range(0, 10);
。示例:MSDN 页面此处。
You can use
Enumerable.Range(0, 10);
. Example:MSDN page here.
生成指定范围内的整数序列。
http://msdn.microsoft.com/en-us /library/system.linq.enumerable.range.aspx
Generates a sequence of integral numbers within a specified range.
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.range.aspx
您可以创建一个简单的函数。这适用于更复杂的序列。否则
Enumerable.Range
应该可以。You could create a simple function. This would work for a more complicated sequence. Otherwise the
Enumerable.Range
should do.Linq 投影与很少使用的 索引器重载 (i):
我更喜欢这种方法,因为它的灵活性。
例如,如果我想要偶数:
或者如果我想要一小时 5 分钟增量:
或者字符串:
Linq projection with the rarely used indexer overload (i):
I prefer this method for its flexibilty.
For example, if I want evens:
Or if I want 5 minute increments of an hour:
Or strings:
在 C# 8.0 中,您可以使用 索引和范围
例如:
或者如果您想创建
IEnumerable
,那么您可以使用扩展名:PS 但要小心'indexes from end'。例如,ToEnumerable 扩展方法不适用于
var seq = ^2..^0
。In C# 8.0 you can use Indices and ranges
For example:
Or if you want create
IEnumerable<int>
then you can use extension:P.S. But be careful with 'indexes from end'. For example, ToEnumerable extension method is not working with
var seq = ^2..^0
.我的实现:
My implementation:
最初在这里回答。
如果您想枚举从
0
到10
的数字序列 (IEnumerable
),请尝试在解释中获取从 0 到 10 的数字序列,您希望该序列从 0 开始(请记住,0 到 10 之间有 11 个数字)。
如果您想要一个无限的线性系列,您可以编写一个类似的函数
,您可以使用类似的
函数,如果您想要一个可以重复调用以生成递增数字的函数,也许您想要类似的东西。
当您调用
Seq()
时,它将返回下一个订单号并递增计数器。Originally answered here.
If you want to enumerate a sequence of numbers (
IEnumerable<int>
) from0
to a10
, then tryIn explanation, to get a sequence of numbers from 0 to 10, you want the sequence to start at 0 (remembering that there are 11 numbers between 0 and 10, inclusive).
If you want an unlimited linear series, you could write a function like
which you could use like
If you want a function you can call repeatedly to generate incrementing numbers, perhaps you want somthing like.
When you call
Seq()
it will return the next order number and increment the counter.我的代码中有这些函数
这有助于减少一些 for(i) 代码。
I have these functions in my code
This helps to reduce some for(i) code.
如果您还希望将生成的序列保存在变量中:
这在上面显示的其他解决方案中是隐式的,但我还显式地包含了所需的命名空间,以便使其按预期工作。
In case you wish to also save the generated sequence in a variable:
This is implicit in other solutions shown above, but I am also explicitly including the needed namespaces for this to work as expected.