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根本就不能直接用在托管代码中,它只能用在非安全代码里面去测长度。
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根本就不能直接用在托管代码中,它只能用在非安全代码里面去测长度。
int i=System.Runtime.InteropServices.Marshal.SizeOf(typeof(char));
i竟然等于0;
而且sizeof根本就不能直接用在托管代码中,它只能用在非安全代码里面去测长度。
#3
确实是非托管代码的问题,长见识。
#4
两个........
#5
我前两天对一个结构的长度用Marshal.SizeOf去测长度,实际长度为27个字节,但是却只给出了16个字节的结果,所以这个东西我认为在托管代码中还是不要使用这个东西!!