【问题标题】:Adding items to a generic list (novice)将项目添加到通用列表(新手)
【发布时间】:2011-02-16 22:44:09
【问题描述】:

我有点不好意思问这个问题,但我知道有更好的方法可以做到这一点,我只是不知道怎么做

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

【问题讨论】:

  • 您实际上不需要预先指定列表的大小。只是一个旁注。此外,没有什么比我见过有很多 exp 的专业人士编写这样的代码更愚蠢的问题了。祝你好运
  • perpetualcoder:关于“这样的代码”:我不知道填充列表的另一种方法,除非它是您可以使用的数学方程式或指令。如果您需要用特定的文字填充它,则无法解决此问题(或集合初始化程序,它只是ICollection.Adds 字符串的压缩形式)。
  • @Femaref:他要求更好的方法,你提供了另一种语法。 “这样的代码”并不是要批评代码,而是说“没关系,你可以这样编码”。对不起,如果我表现得像个聪明人$$。
  • 不,看起来并不聪明,但表情似乎有点……至少很奇怪。有一些代码你根本写不出来,但它仍然不是最佳的,这包括这个特殊的问题。

标签: c# arrays list add


【解决方案1】:
List<int> numbers = new List<int>(22) { 3, 4, 9, ..., 99 };

比这还短?仅当您的数字遵循可以用数学表示的模式时。

这是collection initializer

【讨论】:

  • 除了数组要在括号里面,把22去掉。
  • 没有。 22 是初始容量,花括号是集合初始化器。
  • 22指定了一个初始容量,如果你知道你有多少元素,没有理由不添加它。请记住,集合初始值设定项适用于实现 ICollection 的类型,因此它们最终会减少为 ICollection.Add() 调用,您仍然可以通过指定容量来获得性能优势。另一方面,嘿,肯...
  • 赢家鸡肉晚餐。感谢它比我的丑少了 1000%;
【解决方案2】:

您可以使用collection initializer

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

【讨论】:

  • +1 用于链接到对象初始化器的文档;它们非常有用,而且不仅仅用于收藏。
  • 请看我的回答。运行你的代码,看看它是否有效..因为它不适合我。
【解决方案3】:

至少从 C# 3.0 开始,您可以使用初始化器,如下所示:

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

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

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多