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

定义了一个结构体,用
       [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);这里报错,说指定的类型必须是不包含引用的结构。啥意思啊,怎么解决啊

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