blok

2016-04-07 34 views
0

Şu anda ben bir bayt dizisi ile bir şeyler yapmaya çalışıyorum hangi bir yöntemi var EĞER bir takip. Bununla birlikte, bu bayt dizisinin uzunluğu, yöntemin bir parametresine bağlıdır. Dizini if-else bloklarından önce ilan etmem gerek, aksi halde değişken kapsam dışı.blok

yöntemin bir örneği, aşağıda verilmiştir: Bir nesnenin örneğine ayarlanmamış nesne başvurusu olamaz, çünkü yöntem yürütürken

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 

} 

Bir durum hata oluyor.

Yukarıdaki byte[] messageBody numaralı sürümde boş bir başlatma yaptığımda, messageBody = new byte[] yapamıyorum demek istiyorum. Ancak bu bildirimi kaldırırsam, if-else bloklarının altındaki referanslar kapsam dışıdır. Şifreleme gerçekleşmeden önce messageBody uzunluğunu bilmiyorum. Herhangi bir tavsiye?

+0

Kodunuz kesik benim için iyi derler. Bu hatanın kaynağını iki kere kontrol etmek isteyebilir. (buna bir dönüş ekledikten sonra). – Wjdavis5

+1

Bazı önerilerinde atın. Örneğin. RSAEncrypt bir boş değer döndürüyor mu? Ayrıca diziyi neden kopyalıyorsunuz? – CSharpie

+0

Wjdavis5 @ O iyi derler ama bunu çalıştırmak için herhangi bir girişimde istisnası "bir nesnenin örneğine ayarlanmadı nesne başvurusu" atar. RSAEncrypt bir bayt dizisi – James

cevap

2

Benim tahminim sizin hata içinde buraya geliyor olmasıdır:

byte[] RSAEncryptedMessageBody = RSAEncrypt(bodyText); 
messageBody = new byte[(RSAEncryptedMessageBody.Length)]; 

RSAEncrypredMessageBody olasılıkla boş. RSAEncrypt fonksiyonunuz ne yapıyor?

+0

Hatalara bakmaktan ötürü hatalara baktığımızda, gerçekten null. RSAEncryption "Kötü Uzunluk" alıyorum. istisna ve bir deneyin yakalama içinde null döndürüyor. Teşekkürler – James

+1

Bu yüzden kütüphane işlevlerindeki istisnaları yakalamıyorsunuz ve bu işlevin arayıcılarının onlarla ne yapmasını sağlayamıyorsunuz? – Jcl