如果 SubIndex 没有映射到特定值,则使用 if 或 switch。
这就是如果的方式。
if(this.Index == 1100) {
if (this.SubIndex==1) putValue(Com_stMECUErr, this.Data);
if (this.SubIndex==2) putValue(B_sbbvk, this.Data);
if (this.SubIndex==3) putValue(Com_bMSVIdle,this.Data);
// 100's more if's
} else { //if this.Index != 1100
}
这是切换方式。
if(this.Index == 1100) {
switch(this.SubIndex) {
case 1: putValue(Com_stMECUErr, this.Data); break;
case 2: putValue(B_sbbvk, this.Data); break;
case 3: putValue(Com_bMSVIdle,this.Data); break;
// 100's more cases
default: break;
}
// 100's more if's
} else { //if this.Index != 1100
}
如果 SubIndex 确实映射到特定值,那么您可以使用数组以最短的方式进行操作。
YourDataType values[] = {
whatever,
Com_stMECUErr,
B_sbbvk,
Com_bMSVIdle,
hundredsmore
}
if(this.Index == 1100) {
putValue(values[this.SubIndex], this.Data);
}