可能重复:
自动初始化C#列表
我有一个具有一定容量的整数列表,我希望在声明时自动填充.
List<int> x = new List<int>(10);
有没有更简单的方法来填充此列表10个具有int的默认值而不是循环并添加项目的整数?
让我说我有一个简单的List<bool>.我想初始化它并添加例如100个元素.为此,我可以这样做:
var myList = new List<bool>();
for (int i = 0; i < 100; i++)
{
    myList.Add(false);
}
但这不是最优雅的方法.有没有内置的方法来简化它?我不想要任何循环,仅仅是为了好奇
我有List<T>一些包含一些数据.我想把它传递给一个接受的函数ReadOnlySpan<T>.
List<T> items = GetListOfItems();
// ...
void Consume<T>(ReadOnlySpan<T> buffer)
// ...
Consume(items??);
在这个特定的例子中,T是,byte但它并不重要.
我知道我可以.ToArray()在List上使用,并构造一个span,例如
Consume(new ReadOnlySpan<T>(items.ToArray()));
然而,这会创建(看似)不必要的项目副本.有没有办法直接从列表中获取Span?List<T>是在T[]幕后实施的,所以从理论上来说这是可能的,但在实践中并没有我能看到的那么多?
我想要我的蛋糕并吃掉它.
当你超越数组的初始容量时,我喜欢C#中Lists的动态扩展方式.但这还不够.我希望能够做到这样的事情:
int[] n = new int[];    // Note how I'm NOT defining how big the array is.
n[5] = 9
是的,速度会有一些牺牲,因为在幕后,.NET需要检查是否已超出默认容量.如果有,则可以将阵列扩展5倍左右.
遗憾的是,对于Lists,你并不是真的想要设置一个任意元素,虽然你可以这样做,但是如果没有初步设置List的大小,仍然无法直接设置say,第五个元素,更不用说让它在尝试时动态扩展.
对于任何解决方案,我希望能够保持简单的方括号语法(而不是使用相对详细的方法调用),并且当它不扩展时,它具有相对快速(最好与标准数组一样快)阵列.