繁体   English   中英

Java和C#中的char之间的区别((char)-1的特殊问题)

[英]Difference between char in Java and C# (particular problem with (char)-1)

char x = (char)-1;

在Java中有效,但显示错误( 常量值计算中的溢出

我应该在C#中使用其他数据类型吗?

发生该错误是因为C#对文字(“常量计算”)更为精明。 在C#中可以做到...

int x = -1;
char c = (char)x;
int y = c;
// y is 0xffff, as per Java

但是,请注意0xFFFF是无效的Unicode字符 :)

快乐的编码。


使用unchecked也会“起作用”:

unchecked {
  char x = (char)-1;
}

这是C# char类型定义 与Java中一样,它是16位Unicode字符。 如果您只是在寻找一个16字节的带符号值, 则可能需要short

供您参考, 这是 C#中可用的整数类型的列表

您还可以使用unchecked语句,例如unchecked { char x = (char)-1; } unchecked { char x = (char)-1; } ; 但是,如果是我,例如使用-1表示错误值或其他标记,我可能只使用: char x = (char)0xFFFF; 这将为您提供相同的结果,并提供一种检查无效值的方式,而无需绕过类型检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM