困惑,C#内的char是一个字节或是两个字节?

时间:2023-01-11 17:22:03
msdn内的:
char 关键字用于声明下表所示范围内的 Unicode 字符。Unicode 字符是 16 位字符,用于表示世界上多数已知的书面语言。

但是为何:
Console.WriteLine(Marshal.SizeOf(typeof(char))); 为何得到的是1?

难道16位字符不是两个字节吗?

5 个解决方案

#1


Console.WriteLine(sizeof(char)); // 输出2

#2


不查不知道,一查吓一跳:
int i=System.Runtime.InteropServices.Marshal.SizeOf(typeof(char));
i竟然等于0;
而且sizeof根本就不能直接用在托管代码中,它只能用在非安全代码里面去测长度。

#3


确实是非托管代码的问题,长见识。

#4


两个........

#5


我前两天对一个结构的长度用Marshal.SizeOf去测长度,实际长度为27个字节,但是却只给出了16个字节的结果,所以这个东西我认为在托管代码中还是不要使用这个东西!!

#1


Console.WriteLine(sizeof(char)); // 输出2

#2


不查不知道,一查吓一跳:
int i=System.Runtime.InteropServices.Marshal.SizeOf(typeof(char));
i竟然等于0;
而且sizeof根本就不能直接用在托管代码中,它只能用在非安全代码里面去测长度。

#3


确实是非托管代码的问题,长见识。

#4


两个........

#5


我前两天对一个结构的长度用Marshal.SizeOf去测长度,实际长度为27个字节,但是却只给出了16个字节的结果,所以这个东西我认为在托管代码中还是不要使用这个东西!!