表示数组属性的更好方法

本文关键字:更好 方法 属性 数组 表示 | 更新日期: 2023-09-27 18:00:14

考虑数组属性:

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]时,您会得到一个新的未更改的值。

当设置单个元素时,如何更好地设计使属性看起来像数组/矩阵,但实际上会影响底层数据?

表示数组属性的更好方法

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