我想创建一个包含从1930到2010这些整数的C# List
。从我的直觉来看,唯一能想到的方法是使用for
或while
循环,遍历两个数字之间的每个整数,并将它们逐个添加到List
中。
我知道在使用Linq时,C# List有许多有趣的方法。有没有人能想出一种更高效的方法呢?
我想创建一个包含从1930到2010这些整数的C# List
。从我的直觉来看,唯一能想到的方法是使用for
或while
循环,遍历两个数字之间的每个整数,并将它们逐个添加到List
中。
我知道在使用Linq时,C# List有许多有趣的方法。有没有人能想出一种更高效的方法呢?
Enumerable.Range(1930, 81)
(MSDN文档) 可以获得包含所需数字的可枚举对象。第一个参数是起始值,第二个参数是项目数。你需要81而不是80,因为你想要包括从1930到2010的年份。
如果你明确想要它作为一个 List
,则使用 Enumerable.Range(1930, 81).ToList()
。
这种方法在效率上可能没有什么区别,但是代码更加简洁。
使用 Enumerable.Range()
var MyList = Enumerable.Range(1930, 2010-1930+1).ToList();
new List<int>(Enumerable.Range(1930, 2010-1930+1))
来避免循环呢? - Matt其他两个回答是正确的,使用Enumberable.Range()
是快速/简便的方法,但我想要补充一下。使用DateTime.Now.Year
,这样你就不必每年都修改代码。在两个月内,对第二个参数使用硬编码值将使其过时。
List<int> listYears = Enumerable.Range(1930, DateTime.Now.Year - 1930 + 1).ToList();
Enumerable.Range
就是一个标准的这样的方法:IEnumerable<int> InclusiveRange(int s, int e) {
for (int i = s; i <= e; i++) {
yield return i;
}
}
var r = InclusiveRange(1930, 2010).ToList();
愉快的编码。
var r = InclusiveRange(1930, DateTime.Now.Year - 1930 + 1).ToList();
:) - Noctisvar r = InclusiveRange(1930, DateTime.Now.Year).ToList();
- Stajs