奇怪的场景Convert.ToChar(integer)或(char)integer
c#
我有以下条件。
Console.WriteLine(Convert.ToChar(65)); // Gives 'A'
Console.WriteLine(Convert.ToChar(65) + 1); // Gives 66; Expectation was 'A1'
Console.WriteLine(Convert.ToChar(65) + "1"); // Gives 'A1'
这是为什么?我想要第三种情况。
回答
您得到 66 而不是 A1 的原因是因为您将字符添加到整数。如果你向 char 添加一个字符串,那么它才会返回一个字符串。
关于 char的文档char 关键字用于声明 System.Char 结构的实例,.NET Framework 使用该实例来表示 Unicode 字符。Char 对象的值是一个 16 位数字(序数)值
- That first statement is a bit misleading. `Convert.ToChar(65)` does produce `A`, but as a `char` not a `string` which is what the _and when you add something to a string, it is "appended" to it_ seems to imply.
回答
你的期望是错误的。该char类型是数字型,可容纳整数。所以当你做
Convert.ToChar(65)
你仍然有一个值为 65 的数字。所以当你这样做时
Convert.ToChar(65) +1
您将 char 隐式转换回 int 并添加 +1,因此您得到 66
char 区别于其他数字类型的特殊之处在于,当您将其转换为字符串时,它会显示为我们从字母表中知道的“字符”。因此,当你做
Convert.ToChar(65) + "1"
值为 65 的字符被隐式转换为字符串 ( "A"),然后与字符串连接"1"。因此结果是"A1"
THE END
二维码