二进制阅读器问题

时间:2011-12-02 21:38:09

标签: c# nullreferenceexception binaryreader

当我运行程序时,下面的代码会出现错误:

///////////////////////////// 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 个答案:

答案 0 :(得分:1)

根据您发布的代码,我们无法确定br是什么。当使用的其中一个对象为null时,NullReferenceException被装入。对于您的异常,基础BaseStream可以为null或br本身为null。

当调试器中断时,将鼠标悬停在br上并查看它显示的内容,如果它不为null,请滚动查看属性以查找BaseStream并查看是否为空。

我的猜测?您创建一个名为 br2 的新BinaryReader对象,并从 .BaseStream.Position 访问br属性。

答案 1 :(得分:0)

因为br或br.BaseStreamnull