對于整Socket網(wǎng)絡(luò)通訊的人來說,packet這玩意一定不會陌生.但是要知道此類的字段字節(jié)總數(shù),使用Marshal.SizeOf,無疑是一個非常好的選擇.這樣可以大大節(jié)省你計算字節(jié)數(shù)的時間.
為忠縣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及忠縣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、忠縣網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
使用方法: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(); } } }
關(guān)于 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; } } } }
其結(jié)果為26 . 3個ushort + 10個unicode字符 = 3X2 + 10X2 = 26
當(dāng)然 : 如果沒有 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] 特性
則使用Marshal.SizeOf就是一個坑 , 誰知道String占多少字節(jié)???