[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct TCMPP_DELIVER
{
public long Msg_Id;//信息标识
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 21)]
public Char[] Dest_Id;//Char[21];//目的号码
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public Char[] Service_Id;//Char[10];//业务类型,是数字、字母和符号的组合。
public Byte TP_pid;//GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
public Byte TP_udhi;//GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
public Byte Msg_Fmt;//信息格式
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Char[] Src_terminal_Id;// Char[32]; //源终端MSISDN号码
public Byte Src_terminal_type;//源终端号码类型,0:真实号码;1:伪码。
public Byte Registered_Delivery; //是否为状态报告0:非状态报告1:状态报告
public Byte Msg_Length; //消息长度
}
private TCMPP_DELIVER TCMPP_DELIVERBytesToStuct(byte[] bs)
{
TCMPP_DELIVER TCM;
int index = 0;
TCM.Msg_Id = BitConverter.ToInt64(bs, index);
index += 7;
String STR1 = System.Text.Encoding.Unicode.GetString(bs, index, 21);
TCM.Dest_Id = STR1.ToCharArray();
index += 21;
String STR2 = System.Text.Encoding.Unicode.GetString(bs, index, 10);
TCM.Service_Id = STR2.ToCharArray();
index += 10;
TCM.TP_pid = bs[index];
index += 1;
TCM.TP_udhi = bs[index];
index += 1;
String STR3 = System.Text.Encoding.Unicode.GetString(bs, index, 32);
TCM.Src_terminal_Id = STR3.ToCharArray();
index += 32;
TCM.Src_terminal_type = bs[index];
index += 1;
TCM.Registered_Delivery = bs[index];
index += 1;
TCM.Msg_Length = bs[index];
index += 1;
return TCM;
}
为什么总是说"错误 1 使用了未赋值的局部变量“TCM”"
我查不出是怎么原因.请各位前辈们帮下我.
public struct TCMPP_DELIVER
{
public long Msg_Id;//信息标识
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 21)]
public Char[] Dest_Id;//Char[21];//目的号码
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public Char[] Service_Id;//Char[10];//业务类型,是数字、字母和符号的组合。
public Byte TP_pid;//GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
public Byte TP_udhi;//GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
public Byte Msg_Fmt;//信息格式
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public Char[] Src_terminal_Id;// Char[32]; //源终端MSISDN号码
public Byte Src_terminal_type;//源终端号码类型,0:真实号码;1:伪码。
public Byte Registered_Delivery; //是否为状态报告0:非状态报告1:状态报告
public Byte Msg_Length; //消息长度
}
private TCMPP_DELIVER TCMPP_DELIVERBytesToStuct(byte[] bs)
{
TCMPP_DELIVER TCM;
int index = 0;
TCM.Msg_Id = BitConverter.ToInt64(bs, index);
index += 7;
String STR1 = System.Text.Encoding.Unicode.GetString(bs, index, 21);
TCM.Dest_Id = STR1.ToCharArray();
index += 21;
String STR2 = System.Text.Encoding.Unicode.GetString(bs, index, 10);
TCM.Service_Id = STR2.ToCharArray();
index += 10;
TCM.TP_pid = bs[index];
index += 1;
TCM.TP_udhi = bs[index];
index += 1;
String STR3 = System.Text.Encoding.Unicode.GetString(bs, index, 32);
TCM.Src_terminal_Id = STR3.ToCharArray();
index += 32;
TCM.Src_terminal_type = bs[index];
index += 1;
TCM.Registered_Delivery = bs[index];
index += 1;
TCM.Msg_Length = bs[index];
index += 1;
return TCM;
}
为什么总是说"错误 1 使用了未赋值的局部变量“TCM”"
我查不出是怎么原因.请各位前辈们帮下我.
TCMPP_DELIVER TCM = new TCMPP_DELIVER();