相关疑难解决方法(0)

使用默认值填充列表<int>?

可能重复:
自动初始化C#列表

我有一个具有一定容量的整数列表,我希望在声明时自动填充.

List<int> x = new List<int>(10);
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来填充此列表10个具有int的默认值而不是循环并添加项目的整数?

c# list

53
推荐指数
4
解决办法
8万
查看次数

使用一些元素计数初始化List <>

让我说我有一个简单的List<bool>.我想初始化它并添加例如100个元素.为此,我可以这样做:

var myList = new List<bool>();

for (int i = 0; i < 100; i++)
{
    myList.Add(false);
}
Run Code Online (Sandbox Code Playgroud)

但这不是最优雅的方法.有没有内置的方法来简化它?我不想要任何循环,仅仅是为了好奇

c# list

14
推荐指数
4
解决办法
7970
查看次数

如何从List <T>获取Span <T>,同时避免不必要的副本?

我有List<T>一些包含一些数据.我想把它传递给一个接受的函数ReadOnlySpan<T>.

List<T> items = GetListOfItems();
// ...
void Consume<T>(ReadOnlySpan<T> buffer)
// ...
Consume(items??);
Run Code Online (Sandbox Code Playgroud)

在这个特定的例子中,T是,byte但它并不重要.

我知道我可以.ToArray()在List上使用,并构造一个span,例如

Consume(new ReadOnlySpan<T>(items.ToArray()));
Run Code Online (Sandbox Code Playgroud)

然而,这会创建(看似)不必要的项目副本.有没有办法直接从列表中获取Span?List<T>是在T[]幕后实施的,所以从理论上来说这是可能的,但在实践中并没有我能看到的那么多?

c# memory

11
推荐指数
2
解决办法
690
查看次数

糖衣阵列(动态调整大小并随意设置任何元素)

我想要我的蛋糕并吃掉它.

当你超越数组的初始容量时,我喜欢C#中Lists的动态扩展方式.但这还不够.我希望能够做到这样的事情:

int[] n = new int[];    // Note how I'm NOT defining how big the array is.
n[5] = 9
Run Code Online (Sandbox Code Playgroud)

是的,速度会有一些牺牲,因为在幕后,.NET需要检查是否已超出默认容量.如果有,则可以将阵列扩展5倍左右.

遗憾的是,对于Lists,你并不是真的想要设置一个任意元素,虽然你可以这样做,但是如果没有初步设置List的大小,仍然无法直接设置say,第五个元素,更不用说让它在尝试时动态扩展.

对于任何解决方案,我希望能够保持简单的方括号语法(而不是使用相对详细的方法调用),并且当它不扩展时,它具有相对快速(最好与标准数组一样快)阵列.

.net c# arrays list syntactic-sugar

1
推荐指数
1
解决办法
168
查看次数

设置列表初始大小

如何使用C#在.Net中设置某个对象类型列表的初始大小,并能够在指定的索引处插入完全分配的对象?

.net c# arrays list

-2
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×5

list ×4

.net ×2

arrays ×2

memory ×1

syntactic-sugar ×1