c# - 作为属性和索引器的数组

标签 c# arrays properties indexer

我在一个类中有两个私有(private)数组,它们使用一种方法运行特定操作。调用此方法后,这两个数组将填充结果。制作这些数组属性不是一个好的做法,所以我计划有一个单独的属性来返回私有(private)数组的克隆。

1) 返回数组克隆的开销是多少?在任何情况下都不会引起注意吗?

2) 如果只有一个数组,我可以使用索引器。是否有一种特定的机制可以为一个类中的多个数组使用索引器?

最佳答案

我认为您的意思是“开销”或“成本”,而不是“重载”。无论如何,计算上它是O(1)所以这取决于数组的大小,但一般来说,如果数组元素少于一千个左右,数组复制是一种廉价操作。

如果您不打算修改数组,那么您可以通过将它们包装在 ReadOnlyCollection<T> 中来公开您的私有(private)数组。像这样:

private TWhatever[] _array;
public ReadOnlyCollection<TWhatever> Elements { get; private set; }

public ClassConstructor() {
    _array = new TWhatever[1000];
    this.Elements = new ReadOnlyCollection<TWhatever>( _array );
}

关于c# - 作为属性和索引器的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777631/

相关文章:

python - 了解 Python 中的嵌套列表

javascript - 获取javascript中具有最高值的数组键

ios - 如何制作 Segue 传递数据并仅在满足特定条件时执行

c# - 在 C# 中将注册表项导出到 .REG 文件

c# - 其他进程的 GetKeyboardLayoutName?

c# - 如何更新Web.config以通过C#通过电子邮件发送错误?

ios - 从不同的类在 webView 上加载 NSURLRequest。

c# - 从其他表单调用时,DataGridView.DataSource 返回空 DataTable

c - 表达式 ( arr[i+1] - arr[i] ) 如何产生与索引差相同的十进制数?

c# - 单元测试时使用反射或属性?