Mic*_*l J 5 c c# arrays multidimensional-array
回到C的旧时代,人们可以使用数组下标以非常有用的方式解决存储问题.例如,可以声明一个数组.
该阵列表示具有8位字的EEPROM图像.
BYTE eepromImage[1024] = { ... };
Run Code Online (Sandbox Code Playgroud)
然后将该数组称为真正的多维存储
BYTE mpuImage[2][512] = eepromImage;
Run Code Online (Sandbox Code Playgroud)
我确定我的语法错了,但我希望你能理解.
无论如何,这投影了真正的单维存储的二维图像.
二维投影表示当加载到具有16位字的MPU的存储器中时的EEPROM图像.
在C中,可以多维度地引用存储并更改值,并且更改的值将显示在真实(单维)存储中,几乎就像魔法一样.
是否有可能使用C#做同样的事情?
我们当前的解决方案使用多个数组和事件处理程序来保持同步.这样的工作,但如果有更好的方法,我们希望避免额外的复杂性.
您可以将数组包装在类中,并编写1维和2维Indexer属性.
没有验证等,对于10x10阵列看起来像这样:
class ArrayData
{
byte[] _data = new byte[100];
public byte this[int x]
{
get { return _data[x]; }
set { _data[x] = value; }
}
public byte this[int x, int y]
{
get { return _data[x*10+ y]; }
set { _data[x*10 + y] = value; }
}
}
Run Code Online (Sandbox Code Playgroud)