向通用列表添加项目(初学者)

4

我有些尴尬地问这个问题,但我知道有更好的方法来解决它,只是不知道怎么做。

List<int> numbers = new List<int>(22);
numbers.Add(3);
numbers.Add(4);
numbers.Add(9);
numbers.Add(14);
numbers.Add(15);
//...

你其实不需要事先指定列表的大小。只是一个侧面的评论。还有,没有所谓的愚蠢问题,我见过很多经验丰富的专业人士编写像这样的代码。祝好运! - Perpetualcoder
perpetualcoder:关于“像这样的代码”,除非是数学方程或指令,否则我不知道填充列表的另一种方法。如果您需要使用特定文字填充它,则没有其他选择(或集合初始化程序,它只是ICollection.Add字符串的压缩形式)。 - Femaref
@Femaref:他询问了更好的方法,你提供了一种替代语法。"像这样的代码"并不是要批评代码,而是说"没关系,你可以这样编码"。如果我显得有点聪明,请原谅。 - Perpetualcoder
不,它似乎并不是自以为是的,但表达方式至少有点奇怪。有些代码你无法写得更好,即使这个特定问题仍然不够优化。 - Femaref
3个回答

6
List<int> numbers = new List<int>(22) { 3, 4, 9, ..., 99 };

只有当你的数字遵循可以用数学表达的模式时,它才会比这更短。
这是集合初始化器

除了数组应该在括号内,而且22应该被删除。 - Ken Wayne VanderLinde
4
不。"22"是初始化容量,花括号是集合初始化器。 - Femaref
1
22指定了一个初始容量,如果你知道有多少元素,就没有理由不添加它。请记住,集合初始化器适用于实现ICollection接口的类型,因此它们最终会被转换为ICollection.Add()调用,通过指定容量仍然可以获得性能优势。另外,嘿,肯... - LorenVS
赢家赢家鸡晚餐。谢谢,这比我之前的好看了1000%。 - Crash893

6

+1 链接到对象初始化程序文档,它们非常有用,不仅适用于集合。 - Dan J
请查看我的答案。运行你的代码看看是否能正常运行,因为对我来说不能。 - Nick Rolando

2
从C# 3.0开始,您可以使用初始化程序,例如:
List<int> numbers = new List<int>{ 3, 4, 9, ... , 99 };

指定初始容量(22)并不是非常必要...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接