我使用的ImmutableList如下所示:
上面的代码没有将任何数据添加到不可变列表中。它仍然是空的,我不知道为什么所有的数据都是有效的。类似的代码用于填充其他数据结构,如ConcurrentQueue和ConcurrentBag,并且工作良好。
在不可变列表的用法中,我是否遗漏了什么东西,需要纠正吗?请注意,这是一个多线程操作,但这不会是一个问题,因为这个数据结构是线程安全的。
发布于 2014-09-13 06:32:13
发布于 2014-09-13 06:32:44
不可变列表是一个不变的列表。以下是MSDN对其含义的描述:
当您从不可变列表中添加或删除项目时,添加或删除的项目将生成原始列表的副本,而原始列表将保持不变。
这意味着每次执行像Add这样的操作时,都不会更改原始列表,但是会返回带有Add元素的新列表。这意味着您需要使用这样的代码来获得正确的列表:
immutableList = immutableList.Add(writeData);
这让我觉得你是在错误的情况下使用它。
发布于 2022-10-25 07:51:45
创建你的正常名单..。将其转换为数组,使用该数组生成不可变的列表.这是我的片段
var result = csvReader.GetRecords<Data>().ToArray();
return ImmutableList.Create<Data>(result);
https://stackoverflow.com/questions/25824158
复制相似问题