繁体   English   中英

为什么Visual Studio 2010 C#调试器显示的顺序不同于类定义中的顺序?

[英]Why does Visual Studio 2010 C# debugger show different order than in class definition?

我们正在构造一个字节缓冲区,以便通过.Net Socket Send()方法发送到某些工厂设备,因此字节顺序很重要。 但是我注意到,即使使用“ [StructLayout( LayoutKind.Sequential ”“),Visual Studio 2010调试器也会显示与我指定的顺序不同的顺序。例如,

  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  public class K_NEWFILEGET_START
  {
      public K_HEADER Header = new K_HEADER();
      [System.Runtime.InteropServices.MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
      public byte[] fileName = new byte[32];
      public globals.INT2_Type crc = new globals.INT2_Type();
  }

然后我做一个

 K_NEWFILEGET_START msg = new K_NEWFILEGET_START();

在调试器中显示。

-    msg      {xxxxx.yyy.K_NEWFILEGET_START}        
+    crc      {xxxxx.globals.INT2_Type}     
+    fileName {byte[32]}                        
+    Header   {xxxxx.yyy.K_HEADER}

(专有内容xxx'出来)在本示例中,它的顺序相反,但在其他示例中,调试器中显示的顺序以不同的方式加扰。

如果我更进一步,并使用网络嗅探器检查网络上的实际输出,则似乎是我指定的正确顺序,因此调试器似乎是问题所在,但我希望正确看到它。 顺便说一句,我确实在调试器选项中设置了“在变量窗口中显示对象的原始结构”。 提前致谢!

调试器按字母顺序显示成员。

在调试其中包含很多内容的大型结构时,这通常更方便。

当然看起来是按字母顺序排列的...

如果网络嗅探器正确显示它,则调试器很可能只是通过按字母顺序排列变量名来尝试“帮助”您,以便您可以更轻松地找到它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM