【发布时间】:2018-09-25 05:10:18
【问题描述】:
我需要实现一个多维数组作为公共属性。 我使用锯齿状数组进行初始实现:
public int[][] ArrayProperty
{get; set;}
但是,它给了我一个代码分析错误 - 'CA1819:PropertiesShouldNotReturnArrays'
所以我想将其更改为嵌套列表,例如:
public List<List<int>> ArrayProperty
{get;set;}
但我很确定它会给出另一个代码分析错误,说不嵌套泛型类型。 此外,如果我将其更改为 List,我希望它是只读的,并有一个备份私有字段。
我怎样才能更新我的财产结构以得到最好的实施来满足我的要求?
【问题讨论】:
-
您希望消费者能够编辑数组吗?
-
可以,他可以获取和设置数组的值。
-
嗯,它只是一个变暖,有一个很好的理由为什么会有一个警告,如果你知道更好,你可以禁用它
-
过去我发现如果使用类型化类的列表/数组而不是多维数组,维护起来会更容易。
-
建议您不要公开数组的原因是它们是可变的(不像普通的 IEnumerable 集合)和协变的,不像列表。但是,如果您的设计表明您想要公开一个数组数组(这实际上不是一个多维数组),请认真思考“这就是我真正想要做的事情”,如果是这样,请抑制警告并继续执行。