如何修改数组中结构体的值
现在定义了一个结构体TRtuAnalog
public struct TRtuAnalog
{
public string SName;
public Single fUpLimit; //上限值
public Single fDownLimit; //下限值
}
public static TRtuAnalog tRtuAnalog;
同时定义一个ArrayList 数组
public static ArrayList[] aRealTime
{
get
{
if aRealTime == null)
aRealTime = new ArrayList[255];
return aRealTime
}
set
{
if (value == null)
throw new aRealTime ( "value ");
aRealTime = value;
}
}
然后给tRtuAnalog 赋值
TRtuAnalog.SName= "aaa ";
TRtuAnalog.fUpLimit=1;
TRtuAnalog.fDownLimit=2;
最后将TRtuAnalog添加到aRealTime 中
aRealTime[iIndex].Add(tRtuAnalog);
请问我如何修改aRealTime中某一行中的SName值为tRtuAnalog.SName= "bbbb " 。
我写下面的语句后
((TRtuAnalog)aRealTime[iIndex][index]).SName= "bbbb " ;
提示我“无法修改取消装箱转换的结果”.
------解决方案--------------------因为结构是值传递,非引用,
((TRtuAnalog)aRealTime[iIndex][index]) 是形成一个临时变量,而非aRealTime内部结构的本身,所以你修改这个临时变量是没有用的,因此出错
反射
or
利用接口
------解决方案--------------------对数据里的结构体值,应该用一个新的结构体设置好值后再给到数据,而不是直接修改数组里的结构体。
------解决方案--------------------interface yourinterface
{
string Name{
get;
set;
}
.....
}
public struct TRtuAnalog:yourinterface
{
string SName;
Single fUpLimit; //上限值