ImmutableList不包含带0个参数的构造函数

时间:2018-06-12 15:06:12

标签: c# immutable-collections

我试图初始化一个像常规列表一样的不可变列表,但是它告诉我它不会采用0个参数。如果我传递1个参数,2个参数等,它会抛出相同的错误。

public static readonly ImmutableList<object[]> AddressTestCases = new ImmutableList<object[]>
{
    new object[]{ "", false },
    new object[]{ "testestest", true },
};

我在这里做错了什么?有没有办法在不使用.Add?

的情况下执行此操作

3 个答案:

答案 0 :(得分:4)

好的ImmutableList有一个你应该使用的创建方法

public ImmutableList<int> ImmutableListCreate()
{
    return ImmutableList.Create<int>(1, 2, 3, 4, 5);
}

答案 1 :(得分:0)

您使用的语法是而不是调用您认为的构造函数。它调用空构造函数,然后调用.Add后台调用你给出的对象数组。

您需要使用其中一种构建器方法:

public static readonly ImmutableList<object[]> AddressTestCases =
                          new[] {
                                   new object[]{ "", false }, 
                                   new object[]{ "testestest", true }
                                }).ToImmutableList();

答案 2 :(得分:0)

要创建ImmutableList,您必须使用在ImmutableList静态类上定义的静态工厂方法Create()。

这意味着你需要

public static readonly ImmutableList<object[]> AddressTestCases = 
    ImmutableList.Create(new object[] { "", false }, new object[] { "testtest", true });