ImmutableArray在哪里?

时间:2015-03-26 07:57:43

标签: c# immutable-collections

为什么ImmutableArray似乎不存在于Microsoft Immutable Collections NuGet包版本1.0.34中?

enter image description here

2 个答案:

答案 0 :(得分:7)

您的版本库中不存在

ImmutableArray

正如您在version history中所看到的,1.1.20的发行说明提及"重新包含ImmutableArray< T>"

您可以在此announcement中找到.NET博客上1.0版本中不存在ImmutableArray的原因的解释。 (简而言之 - 当他们尝试使用该类型而不是常规数组时,Roslyn团队的性能受到了显着影响,负责该库的团队不确定如何解决这个问题,同时保持合理的API。)

您可以在新的NuGet包System.Collections.Immutable下找到更新版本的库。

注意:根据System.Collections.Immutable新版本中的source code,他们显然已经决定采用API命中 - 也就是说,对于单元化ImmutableArray的某些操作会抛出一个令人惊讶NullReferenceException。显然,ImmutableArray 永远不会使用new进行实例化。 (而应使用ImmutableArray<T>.Empty

答案 1 :(得分:1)

来自documentation

public static class ImmutableArray

ImmutableArray静态,因此您无法实例化它。使用:

ImmutableArray.Create<T>(); // Creates an empty immutable array