网上有关“C#中sizeof的问题”话题很是火热,小编也是针对C#中sizeof的问题寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
问题一、下表显示了表示某些基元类型大小的常量值。
表达式
结果
sizeof(sbyte)
1
sizeof(byte)
1
sizeof(short)
2
sizeof(ushort)
2
sizeof(int)
4
sizeof(uint)
4
sizeof(long)
8
sizeof(ulong)
8
sizeof(char)
2 (Unicode)
sizeof(float)
4
sizeof(double)
8
sizeof(bool)
1
对于所有其他类型(包括 struct),sizeof 运算符只能在不安全代码块中使用。虽然可以使用 Marshal.SizeOf 方法,但该方法返回的值和 sizeof 返回的值并不总是相同的。Marshal.SizeOf 在已封送处理类型后返回大小,而 sizeof 返回公共语言运行时分配的大小(包括任何空白)。
c sharp 中用的是unicode编码,所以一个char占用两个字节(比如表示一个汉字,需要两个字节)。而在非托管的语言中,字符编码都是8位(比如美国国家标准协会的编码ansi).。
问题二、
要从C语言谈起。
C语言里面struct的空间大小有个对齐原则,以占据空间最大的那个类型的大小的倍数对齐,也就是在这里,int a占了4字节,那么最终struct必须占据4的
最小倍数,此处正常算出来是10,但是10不是4的倍数,必须补足到12.
C#也是一样的道理。这是一种优化机制或者说一种规定罢了
sizeof(double) = 8;
sizeof(int) = 4;
从8位转换成4位肯定丢失一些信息,所以会有警告,但不是错误。
如果强制转换可以用
a = (int)c;
关于“C#中sizeof的问题”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[俎红芹]投稿,不代表汇盛号立场,如若转载,请注明出处:https://www.hs59.cn/hs/1614.html
评论列表(3条)
我是汇盛号的签约作者“俎红芹”
本文概览:网上有关“C#中sizeof的问题”话题很是火热,小编也是针对C#中sizeof的问题寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。问...
文章不错《C#中sizeof的问题》内容很有帮助