首页 > 解决方案 > 将多维数组属性公开的最佳方式?

问题描述

我需要实现一个多维数组作为公共属性。我使用锯齿状数组进行初始实现:

public int[][] ArrayProperty
{get; set;}

但是,它给了我一个代码分析错误 - 'CA1819:PropertiesShouldNotReturnArrays'

所以我想将其更改为嵌套列表,例如:

public List<List<int>> ArrayProperty
{get;set;}

但我很确定它会给出另一个代码分析错误,说不嵌套泛型类型。此外,如果我将其更改为列表,我希望它是只读的,具有备份私有字段。

我如何更新我的财产结构以获得最佳实施以满足我的要求?

标签: c#arrays.net

解决方案


.NET Framework 通常通过创建自定义集合类来解决这个问题。这样可以验证数据,可以提供自定义方法,并且类型名称可以使代码更易于理解。

class MyCollection : IList<int[]> { ... }

您甚至可以进一步包装int[]

//alterantively add an indexer instead of exposing the array
class MyThing { public int[] MyValues { get; set; } }

class MyCollection : IList<MyThing> { ... }

这可能是很多工作。如果您正在编写一个库供其他人使用,那么这可能是值得的。如果是内部代码,我会选择方便的。您可以稍后更改它,因为您正在控制所有呼叫者。


推荐阅读