c#如何初始化定长的List?

PenguinGoHack
  • 227

初始化一个空的List

    public List<string> objectNames;
    objectNames = new List<string>();

我需要在这个List的一些特定的位置存放数据,但是如果是空数组会有IndexError
请问如何初始化一个定长的List?

回复
阅读 17k
4 个回答
jaege
  • 2.5k
✓ 已被采纳

方法一

直接初始化:

public List<string> ls = new List<string>(new string[initial_size]);

方法二

添加一个 helper class:

public static class Lists
{
    public static List<T> RepeatedDefault<T>(int count)
    {
        return Repeated(default(T), count);
    }

    public static List<T> Repeated<T>(T value, int count)
    {
        List<T> ret = new List<T>(count);
        ret.AddRange(Enumerable.Repeat(value, count));
        return ret;
    }
}

然后

public List<string> ls = Lists.RepeatedDefault<string>(initial_size);

参考

Dictionary<int, string>

为什么不用数组

还不如初始化一个固定长度的数组:
var array = new int[10];

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏