对于此C#,a==true
bool a = "hello" + '/' + "world" == "hello/world";对于这个C#,b==true
bool b = "hello" + + '/' + "world" == "hello47world";我想知道这是怎么回事,更重要的是,为什么C#语言架构师会选择这种行为?
发布于 2015-08-02 01:56:29
这是因为您使用的是一元运算符+。它类似于一元运算符-,但它不会改变操作数的符号,因此它在这里唯一的作用是隐式地将字符'/'转换为int。
+'/'的值是/的字符代码,是47。
代码的作用与以下内容相同:
bool b = "hello" + (int)'/' + "world" == "hello47world";发布于 2015-08-02 02:02:37
+ '/' 给出了字符"/“的UTF-16 (decimal) 47字符代码,@Guffa已经解释了原因。
发布于 2015-08-02 04:48:08
正如在c#中一样,字符用单引号表示,在本例中为'/‘,字符前面的+运算符充当一元运算符,并要求编译器提供字符'/’的UTF值,即47。
https://stackoverflow.com/questions/31764510
复制相似问题