相关文章  
  • 浅谈如何利用BartPE创建PE工具盘
  • Windows Mobile 2003 Second Edition 中 ActiveSync 编程模型的增强功能
  • 在完成所有绑定后仍然有许多要进行的操作
  • 在你的企业中管理Windows和应用程序
  • 动态加载用户控件的组件
  • 小心GDI+资源泄漏 -- 猜想 测试 应对全过程
  • 浅谈 C# 中的代码协同 (Coroutine) 执行支持
  • Internet Explorer 中编辑 OLE 嵌入文档
  • 教你通过 Emit 实现动态生成一个类
  • 如何才能在10046event自由漫步
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    在 C# 中处理结构内的数组源代码分析6

      虽然类型还是 valuetype IMAGE_DATA_DIRECTORY[],但因为 marshal( fixed array [16]) 的修饰,此数组已经从引用语义改为值语义。不过这样做还是会受到一些限制,如不能多层嵌套、使用时性能受到影响等等。
      
      除了上述两种在结构定义本身做文章的解决方法,还可以从结构的操作上做文章。
      
      此类结构除了对结构内数组的访问外,主要的操作类型就是从内存块或输入流中读取整个结构,因此完全可以使用 CLR 提高的二进制序列化支持,通过实现自定义序列化函数来完成数据的载入和保存,如:
      以下内容为程序代码:
      
      
      [Serializable]
      public struct IMAGE_OPTIONAL_HEADER : ISerializable
      {
      public const int IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;
      
      public ushort Magic;
      
      public uint NumberOfRvaAndSizes;
      
      public IMAGE_DATA_DIRECTORY[] DataDirectory;
      
      public IMAGE_OPTIONAL_HEADER(IntPtr ptr)
      {
      Magic = 0;
      NumberOfRvaAndSizes = 0;
      
      DataDirectory = new IMAGE_DATA_DIRECTORY[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
      }
      
      [Se

    页码:[1] [2] [3] [4] [5] [6] [7] [8]6页、共8页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved