在C#中可以将一个Char转换为Int32产生负值吗?
或者它是否始终保证对所有可能的Chars都是积极的?
它保证是非负面的。
char
是无符号的 16位值。
从C#4规范的4.1.5节:
char
类型表示无符号的16位整数,其值介于0和65535之间char
类型的可能值集对应于Unicode字符集。 虽然char
与ushort
具有相同的表示,但并非所有允许在一种类型上允许的操作都在另一种类型上。
由于char
的范围是U + 0000到U + ffff,因此对Int32
将始终为正。
每个16位值的范围从hex0x0000到0xFFFF,并存储在Char结构中。
字符结构 – MSDN
请参阅Microsoft的文档
在那里你可以看到,Char是U + 0000到U + ffff范围内的16位值。 如果将其强制转换为Int32,则应该没有负值。
char
可以明确地转换为ushort
, ushort
范围是0 to 65,535
所以它总是正面的