Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中寻找可用的不可变布尔数组#_C#_Arrays_Immutability_Immutable Collections - Fatal编程技术网

C# 在C中寻找可用的不可变布尔数组#

C# 在C中寻找可用的不可变布尔数组#,c#,arrays,immutability,immutable-collections,C#,Arrays,Immutability,Immutable Collections,我有一个类,它有一个bool数组成员。如果修改此数组的元素,则应创建实例的新修改副本。听起来是使用不可变类型的绝佳机会。谷歌搜索显示微软提供了一个新的库,它可以很好地用于其他用例。但不适用于前面提到的bool数组成员 看似合适的ImmutableArray类型暂时被删除,文档中似乎也没有包含索引器。可能的替换ImmutableList不适用于结构。我不愿意引入另一个第三方库,所以我想知道我有什么选择,应该选择什么 我可以创建一个类Bool来满足引用类型的要求。或者我可以使用BitArray,但尝

我有一个类,它有一个bool数组成员。如果修改此数组的元素,则应创建实例的新修改副本。听起来是使用不可变类型的绝佳机会。谷歌搜索显示微软提供了一个新的库,它可以很好地用于其他用例。但不适用于前面提到的bool数组成员

看似合适的ImmutableArray类型暂时被删除,文档中似乎也没有包含索引器。可能的替换ImmutableList不适用于结构。我不愿意引入另一个第三方库,所以我想知道我有什么选择,应该选择什么

我可以创建一个类Bool来满足引用类型的要求。或者我可以使用BitArray,但尝试这样使用会失败,并出现编译错误:

IReadOnlyList<BitArray> test = new IReadOnlyList<BitArray>(new BitArray());
IReadOnlyList test=new-IReadOnlyList(new-BitArray());

那么我该怎么做呢?

请注意,这是完全正确的:

var ba = new BitArray(10);
ba.SetAll(true);

IImmutableList<bool> test = ba.Cast<bool>().ToImmutableList();
var ba=新的位数组(10);
ba.SetAll(真);
IImmutableList test=ba.Cast().ToIMutableList();

您的问题是不可变项类型是
bool
,而不是
BitArray
!而
BitArray
来自泛型之前的时代,因此它不支持
IEnumerable
ICollection
IList
,因此您不能直接使用它(请参阅
.Cast()
解决此问题)

何时开始的不可变列表?我可以将它与结构一起使用。@xanatos我在另一台计算机上再次使用ImmutableList与结构一起测试,现在它似乎可以工作了。我不知道为什么会出现这个问题,因为我在询问前两天才安装了这个软件包。尽管如此,感谢您亲自测试,这为我省去了一些麻烦。:)正如我的问题下面的评论中提到的,这似乎是某种安装问题,而不是bool作为结构而不是引用的实际问题。我仍然会将它标记为想要的答案,因为它确实表明我最初的方法应该是开箱即用的。