【问题标题】:Binary Reader problems二进制阅读器问题
【发布时间】:2011-12-02 21:38:08
【问题描述】:

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

///////////////////////////// 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 未处理”和“对象引用未设置为对象的实例。

有什么想法吗?

【问题讨论】:

  • 您的代码部分中定义了 br 的位置
  • 我们能看到 br 的定义吗?还是你的意思是 br2?
  • 我的意思是 br2 ......直到你指出它意味着 br2 我才意识到......我觉得很愚蠢,特别是我在这里坐了一个多小时 :( ...我想这就是你因为错误地命名变量而得到的......非常感谢你,伙计
  • br.ReadByte() 不会将位置增加一个字节吗?您不必每次都更改位置。

标签: c# nullreferenceexception binaryreader


【解决方案1】:

根据您发布的代码,我们无法分辨 br 是什么。 A NullReferenceException 在使用的​​对象之一为空时出现。在您的例外情况下,基础 BaseStream 可能为 null 或 br 本身为 null。

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

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

【讨论】:

    【解决方案2】:

    因为 br 或 br.BaseStreamnull

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 2012-01-27
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 2011-10-20
      相关资源
      最近更新 更多