Проблемы с двоичным считывателем - PullRequest
0 голосов
/ 03 декабря 2011

Когда я запускаю свою программу, приведенный ниже код выдает ошибку:

///////////////////////////// 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 ]

1 голос
/ 03 декабря 2011

С кодом, который вы разместили, мы не можем сказать, что такое br. A NullReferenceException обрабатывается, когда один из используемых объектов является нулевым. В случае вашего исключения базовый BaseStream может быть нулевым или br сам по себе является нулевым.

Когда отладчик выходит из строя, наведите курсор мыши на br и посмотрите, что он показывает, если он не равен нулю, прокрутите свойства, чтобы найти BaseStream, и посмотрите, равно ли это нулю.

Мое предположение? Вы создаете новый объект BinaryReader с именем br2 и получаете доступ к свойству .BaseStream.Position из br.

0 голосов
/ 03 декабря 2011

Потому что br или br.BaseStream это null.

...