千家信息网

MarshalAs的数组的SizeConst有什么作用

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍"MarshalAs的数组的SizeConst有什么作用",在日常操作中,相信很多人在MarshalAs的数组的SizeConst有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简
千家信息网最后更新 2025年11月08日MarshalAs的数组的SizeConst有什么作用

这篇文章主要介绍"MarshalAs的数组的SizeConst有什么作用",在日常操作中,相信很多人在MarshalAs的数组的SizeConst有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"MarshalAs的数组的SizeConst有什么作用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

[StructLayout(LayoutKind.Sequential)]        class CLS        {            public int id;            public float value;            [MarshalAs(UnmanagedType.ByValArray,SizeConst=10,ArraySubType=UnmanagedType.Struct)]            public Point[] ps;            [MarshalAs(UnmanagedType.LPStr)]            public string msg;            [MarshalAs(UnmanagedType.ByValArray,SizeConst=5,ArraySubType=UnmanagedType.LPStr)]            public string[] msgs;        }
 Console.WriteLine("Number of bytes needed by a CLS object:{0}", Marshal.SizeOf(typeof(CLS)));CLS cls = new CLS();            string[] s = new string[10];            for (int i = 0; i < 10;i++ )            {                s[i] = "demo" + i;            }            cls.msgs = s;            for(int i=0;i

上面程序能正确执行显示:demo0....demo9。两次console.writeline大小值一样112。很不明白的地方就是:

CLS中的msgs已经定义了SizeConst=5,即数量为5个元素的数组大小,而实际代码中string[] s的大小是10个串,也就是说cls.msgs的大小也是10个字符串数组,这不冲突有问题吗???两次writeline数据一样,是不是说明实际在计算大小的时候,这个msgs的真正空间大小并没有计算在内,只计算了SizeConst*一个指向真正地址空间的指针的大小即一般来说指针大小是4个字节(本猜想可以参考https://my.oschina.net/u/2963604/blog/5013061这个实验中的" 说明:CLS中没有msg和msgs时是88,有msg是92,有msgs是112。 "来验证)。如果这个猜想是正确的,那我就不明白了,SizeConst=5有什么用呢?反正这个msgs是一个数组,只要知道类型是UnmanagedType.ByValArray,ArraySubType=UnmanagedType.LPSTR/LPWSTR等就可以了,没有必要知道SizeConst。不知有没有人能说得清楚。

到此,关于"MarshalAs的数组的SizeConst有什么作用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

大小 数组 作用 学习 实际 指针 更多 空间 问题 帮助 猜想 实用 清楚 必要 接下来 这不 一般来说 也就是 也就是说 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京极光互动网络技术中心 西宁智能安全文化展厅软件开发 上海自动化软件开发诚信服务 网络安全法的基本制度 oracle热备份恢复数据库 网络安全防范工程师 夸克浏览器服务器地址是多少 论文文献数据库大全 电信公司网络安全检查 豹尔科技互联网增值服务中心 共享备忘录显示无法连接服务器 飞腾 arm 服务器 国家网络安全事件预案 社会工程网络安全小品 社会网络与网络安全的关系论文 软件开发项目需要预付款吗 互联网软件开发怎么赚钱 吉林省信安网络技术 软件开发行业市场供给 idc机房服务器的硬盘尺寸 网络安全课程能学到什么 数据库表有重复的只显示一条 怎样制作dns服务器 银川办公软件开发花多少钱 怎样在万方数据库中找数据 俄罗斯网络安全最新消息 智慧校园软件开发合同 db2数据库服务器存储空间 周鸿祎网络安全公开课 中国移动智能服务器中标
0