2011-12-02 130 views
-2

當我運行我的程序代碼下面的錯誤出現:二進制讀取問題

///////////////////////////// Read in the selected ////////////// 
BinaryReader br2 = new BinaryReader(File.OpenRead(directoryToSearch2), 
            System.Text.Encoding.BigEndianUnicode); 

var Hexbytes = new List<string>(); 

///////////////////////////// Read in offset //////////////// 
for (int a = 0x12 ; a <= 0x26; a++) 
{ 
    br.BaseStream.Position = a; 
    Hexbytes.Add(br.ReadByte().ToString("X2")); 
} 

主線調試器不喜歡的是這個br.BaseStream.Position = a;

它指出,「的NullReferenceException是未處理」和「對象引用不設置到對象的實例。

任何想法是什麼問題呢?

+2

其中在您的代碼段中定義了br –

+2

我們可以看到br的定義嗎?或者你的意思是br2? – MGZero

+0

我的意思是br2 ...我從來沒有意識到,直到你指出它的意思是br2 ...我覺得很愚蠢,特別是我在這裏坐了一個多小時:(......我想這就是你得到的對變量進行嚴重命名....非常感謝你花了這麼多心思 – user826436

回答

0

因爲br或br.BaseStreamnull

1

隨着您發佈的代碼,我們無法確定br是什麼。當使用的對象之一爲空時,將包含一個NullReferenceException。在您的例外情況下,底層BaseStream可能爲空或br本身爲空。

當調試程序中斷時,將鼠標懸停在br上,看看它顯示了什麼,如果它不爲空,請滾動查找BaseStream並查看它是否爲空。

我的猜測是?您創建一個新的BinaryReader對象,稱爲br2並且正在訪問屬性br