在C#中可以将一个Char转换为Int32产生负值吗?

或者它是否始终保证对所有可能的Chars都是积极的?

它保证是非负面的。

char无符号的 16位值。

从C#4规范的4.1.5节:

char类型表示无符号的16位整数,其值介于0和65535之间char类型的可能值集对应于Unicode字符集。 虽然charushort具有相同的表示,但并非所有允许在一种类型上允许的操作都在另一种类型上。

由于char的范围是U + 0000到U + ffff,因此对Int32将始终为正。

每个16位值的范围从hex0x0000到0xFFFF,并存储在Char结构中。

字符结构 – MSDN

请参阅Microsoft的文档

在那里你可以看到,Char是U + 0000到U + ffff范围内的16位值。 如果将其强制转换为Int32,则应该没有负值。

char可以明确地转换为ushortushort范围是0 to 65,535所以它总是正面的