在 .NET 中填充整数列表
Posted
技术标签:
【中文标题】在 .NET 中填充整数列表【英文标题】:Populating a list of integers in .NET 【发布时间】:2010-09-08 03:09:59 【问题描述】:我需要一个从 1 到 x 的整数列表,其中 x 由用户设置。我可以使用 for 循环来构建它,例如假设 x 之前是一个整数集:
List<int> iList = new List<int>();
for (int i = 1; i <= x; i++)
iList.Add(i);
这似乎很愚蠢,肯定有更优雅的方法来做到这一点,比如php range method
【问题讨论】:
【参考方案1】:如果您使用的是 .Net 3.5,Enumerable.Range 就是您所需要的。
生成一个积分序列 指定范围内的数字。
【讨论】:
这将返回一个 IEnumerableLINQ 救援:
// Adding value to existing list
var list = new List<int>();
list.AddRange(Enumerable.Range(1, x));
// Creating new list
var list = Enumerable.Range(1, x).ToList();
见Generation OperatorsLINQ 101
【讨论】:
【参考方案3】:我是许多拥有blogged 的人之一,关于 ruby 风格的 To 扩展方法,如果您使用 C#3.0,您可以编写该方法:
public static class IntegerExtensions
public static IEnumerable<int> To(this int first, int last)
for (int i = first; i <= last; i++)
yield return i;
然后你可以像这样创建你的整数列表
List<int> = first.To(last).ToList();
或
List<int> = 1.To(x).ToList();
【讨论】:
其他答案更有可能是提问者想要的,但我在这里投了赞成票,因为我喜欢由此产生的语法。比“1.To(10)”可读性强多少?【参考方案4】:这是一个返回整数列表的简短方法。
public static List<int> MakeSequence(int startingValue, int sequenceLength)
return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
【讨论】:
以上是关于在 .NET 中填充整数列表的主要内容,如果未能解决你的问题,请参考以下文章