C#Marshal.SizeOf-创新互联
对于整Socket网络通讯的人来说,packet这玩意一定不会陌生.但是要知道此类的字段字节总数,使用Marshal.SizeOf,无疑是一个非常好的选择.这样可以大大节省你计算字节数的时间.

使用方法:Marshal.SizeOf( packet实例 )
using System;
using System.Runtime.InteropServices;
using CMD.com;
namespace CMD
{
public class Program
{
static void Main(string[] args)
{
Myttee my = new Myttee();
my.bcc = 2;
Console.WriteLine(Marshal.SizeOf(my));
Console.Read();
}
}
}关于 Myttee:
//=====================================================================
//
// All right reserved
// filename : Myttee
// description :
//
// create by User at 2016/8/11 13:48:31
//=====================================================================
using System.Runtime.InteropServices;
namespace CMD.com
{
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
internal struct Myttee
{
public ushort wcc;
public ushort bcc;
private ushort ccc;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
public char[] MachineID;
public void Init()
{
this.ccc = 10;
this.MachineID = new char[] {'1', '2', '3'};
}
public ushort MKK
{
get { return 1; }
}
}
}
其结果为26 . 3个ushort + 10个unicode字符 = 3X2 + 10X2 = 26
当然 : 如果没有 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] 特性
则使用Marshal.SizeOf就是一个坑 , 谁知道String占多少字节???
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
本文题目:C#Marshal.SizeOf-创新互联
URL分享:http://www.jxjierui.cn/article/iidgg.html


咨询
建站咨询
