在实体类中使用数组作为属性时,会遇到以下情况:
private int[] _pluse = new int[9];
public int[] Pluse
{
get
{
return this._pluse;
}
set
{
this._pluse = value;
}
}
出现以下问题:
问题描述:原本定义数组长度为9,先赋值后变为7。
原因:数组为引用类型,原来的老数据解析后长度为7,赋值后执行长度为7的数据内存单元。
解决方案:
private int[] _pluse = new int[NemoCoreParam.AxisNum];
public int[] Pluse
{
get
{
return this._pluse;
}
set
{
if(value != null)
Array.Copy(value, _pluse, Math.Min(value.Length, _pluse.Length));
else
Array.Clear(_pluse, 0, _pluse.Length);
}
}
效果如下: