C#中sizeof的问题

网上有关“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

(13)
俎红芹的头像俎红芹签约作者

文章推荐

发表回复

作者才能评论

评论列表(3条)

  • 俎红芹的头像
    俎红芹 2025年07月26日

    我是汇盛号的签约作者“俎红芹”

  • 俎红芹
    俎红芹 2025年07月26日

    本文概览:网上有关“C#中sizeof的问题”话题很是火热,小编也是针对C#中sizeof的问题寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。问...

  • 俎红芹
    用户072607 2025年07月26日

    文章不错《C#中sizeof的问题》内容很有帮助