c# - 将多维数组属性公开的最佳方式?
问题描述
我需要实现一个多维数组作为公共属性。我使用锯齿状数组进行初始实现:
public int[][] ArrayProperty
{get; set;}
但是,它给了我一个代码分析错误 - 'CA1819:PropertiesShouldNotReturnArrays'
所以我想将其更改为嵌套列表,例如:
public List<List<int>> ArrayProperty
{get;set;}
但我很确定它会给出另一个代码分析错误,说不嵌套泛型类型。此外,如果我将其更改为列表,我希望它是只读的,具有备份私有字段。
我如何更新我的财产结构以获得最佳实施以满足我的要求?
解决方案
.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> { ... }
这可能是很多工作。如果您正在编写一个库供其他人使用,那么这可能是值得的。如果是内部代码,我会选择方便的。您可以稍后更改它,因为您正在控制所有呼叫者。
推荐阅读
- oracle - 如何找到oracle表的所有分区信息
- actions-on-google - 无法识别的深度链接回退在模拟器中不起作用
- python - HTTP 错误代码:访问 twitter 高级 API 时出现 429
- ios - 如何使用 NSURLSession 从 Objective-C 中的服务器下载 100 张图像
- typescript - 使用带有 html 和超链接的 emailcomposer ionic 发送电子邮件
- google-chrome - 无法在 Chrome 中连接到 Github 的网站,但是当我使用 Firefox 时它可以工作
- php - Cakephp REST API 报告缺少控制器类
- bash - 在 bash 中调用变量时出现语法错误
- android - 使用 selenium 在 Android 上打开 ChromeBrowser
- javascript - return 语句是否返回匿名对象?