考虑数组属性:
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]时,你会获得一个新的未更改的值。
什么是更好的设计,使属性看起来像一个数组/矩阵,但实际上在设置单个元素时会影响底层数据?
答案 0 :(得分:0)
编写自己的数组类,包含一个索引器访问器,并传递一个更新内部m_value的Get / Set委托,并且不存储自己的m_value副本(实际上它不存储任何内容)。使现有的公共访问器返回数组类的实例,而不是动态生成数组。