ImmutableCollections 提供了许多不同的方式来构造它们。
一般指导是首先填充它们然后使它们不可变。
Create
+AddRange
ImmutableDictionary<string, string> collection1 = ImmutableDictionary
.Create<string, string>(StringComparer.InvariantCultureIgnoreCase)
.AddRange(
new[]
{
new KeyValuePair<string, string>("a", "a"),
new KeyValuePair<string, string>("b", "b"),
});
我们创建了一个空集合,然后创建了另一个具有一些值的集合。
Create
+Builder
ImmutableDictionary<string, string>.Builder builder2 = ImmutableDictionary
.Create<string, string>(StringComparer.InvariantCultureIgnoreCase)
.ToBuilder();
builder2.AddRange(
new[]
{
new KeyValuePair<string, string>("a", "a"),
new KeyValuePair<string, string>("b", "b"),
});
ImmutableDictionary<string, string> collection2 = builder2.ToImmutable();
我们创建了一个空集合,然后将其转换为构建器。
我们已经用值填充了它。
最后,我们构建了不可变集合。
CreateBuilder
ImmutableDictionary<string, string>.Builder builder3 = ImmutableDictionary
.CreateBuilder<string, string>(StringComparer.InvariantCultureIgnoreCase);
builder3
.AddRange(
new[]
{
new KeyValuePair<string, string>("a", "a"),
new KeyValuePair<string, string>("b", "b"),
});
ImmutableDictionary<string, string> collection3 = builder3.ToImmutable();
这是前一种情况的简写形式 ( Create
+ ToBuilder
)
CreateRange
ImmutableDictionary<string, string> collection4 = ImmutableDictionary
.CreateRange(new[]
{
new KeyValuePair<string, string>("a", "a"),
new KeyValuePair<string, string>("b", "b"),
});
这是第一种情况的缩写形式 ( Create
+ AddRange
)
ToImmutableDictionary
ImmutableDictionary<string, string> collection5 = new Dictionary<string, string>
{
{ "a", "a" },
{ "b", "b" }
}.ToImmutableDictionary();
最后但同样重要的是,我们在这里使用了转换器。