表达数组属性的更好方法

时间:2014-04-24 21:17:28

标签: c# arrays properties

考虑数组属性:

private object m_value;
public string[,] StringArray 
{
    get { return ValueToStrings(m_value); }
    set { m_value = StringsToValue(value); } 
}

当你尝试使用这样的属性时,你会发现这是非常错误的:

StringArray[0, 0] = "2";
MessageBox.Show(StringArray[0, 0]);

因为每次访问数组时都会计算数组,所以分配只会影响一个非常短暂的数据,当你再次访问StringArray [0,0]时,你会获得一个新的未更改的值。

什么是更好的设计,使属性看起来像一个数组/矩阵,但实际上在设置单个元素时会影响底层数据?

1 个答案:

答案 0 :(得分:0)

编写自己的数组类,包含一个索引器访问器,并传递一个更新内部m_value的Get / Set委托,并且不存储自己的m_value副本(实际上它不存储任何内容)。使现有的公共访问器返回数组类的实例,而不是动态生成数组。