别cpu我 2022-09-02 16:59 采纳率: 66.7%
浏览 78

定义了一个结构体,尝试读取文件的时候报错

定义了一个结构体,用
       [StructLayout(LayoutKind.Sequential, Pack = 1)]
       public struct StructX

      {
       public int a1;
       public int b;
       public int c;

       public byte j;
       [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] 
       public byte[] k;
       [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
       public UInt32[] l;
       };


MemoryMappedFile memoryFile = MemoryMappedFile.CreateFromFile(pathname, FileMode.Open);
        MemoryMappedViewStream mmpv = memoryFile.CreateViewStream();
        FileInfo file = new FileInfo(pathname);
        long totalBytes = file.Length; //计算总大小
        int size = Marshal.SizeOf(typeof(StructA));//结构体大小
        using (MemoryMappedViewAccessor accessor = memoryFile.CreateViewAccessor(0, totalBytes))
        {
            for (long i = 0; i < totalBytes - size; i = i + size)
            {
               StructA   a = new StructA();
                accessor.Read(i, out a);
accessor.Read(i, out a);这里报错,说指定的类型必须是不包含引用的结构。啥意思啊,怎么解决啊
  • 写回答

1条回答 默认 最新

  • 一梭键盘任平生 2022-09-02 17:31
    关注

    这个方法的第二个参数限制了必须是值类型,
    你的StructA是不是一个引用类型,不支持引用类型的传参

    评论

报告相同问题?

问题事件

  • 创建了问题 9月2日

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆