我目前有一种方法,我试图用字节数组做一些事情。但是,此字节数组的长度取决于方法的参数。我需要在if-else块之前声明数组,而不是在它们中,否则变量超出范围。
该方法的一个例子如下:
private static byte[] messageFormatting(string bodyText, byte packetType)
{
int index = 0;
byte[] messageBody;
if(packetType == 0x03)
{
byte[] RSAEncryptedMessageBody = RSAEncrypt(bodyText);
messageBody = new byte[(RSAEncryptedMessageBody.Length)];
Array.Copy(RSAEncryptedMessageBody, messageBody, RSAEncryptedMessageBody.Length);
}
else
{
messageBody = System.Text.Encoding.ASCII.GetBytes(bodyText);
}
byte[] fullMessage = new byte[(messageBody.Length + 6)];
//do others things
}
执行方法时出现异常错误,因为我无法将对象引用设置为对象的实例。
我认为这意味着当我在之前的messageBody = new byte[]
中进行空白初始化时,我无法byte[] messageBody
。{I}但是,如果我删除此声明,if-else块下面的引用超出范围。在加密发生之前,我不知道messageBody
的长度。有什么建议吗?
答案 0 :(得分:2)
我猜你的错误就在这里:
byte[] RSAEncryptedMessageBody = RSAEncrypt(bodyText);
messageBody = new byte[(RSAEncryptedMessageBody.Length)];
RSAEncrypredMessageBody可能为null。你的RSAEncrypt功能在做什么?