奇怪的场景 Convert.ToChar(integer) 或 (char)integer

Ash*_*sam 2 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'
Run Code Online (Sandbox Code Playgroud)

这是为什么?我想要第三种情况。

Jaw*_*wad 8

您得到 66 而不是 A1 的原因是因为您将字符添加到整数。如果你向 char 添加一个字符串,那么它才会返回一个字符串。

关于 char文档char 关键字用于声明 System.Char 结构的实例,.NET Framework 使用该实例来表示 Unicode 字符。Char 对象的值是一个 16 位数字(序数)值

  • 第一个陈述有点误导。`Convert.ToChar(65)` 确实会产生 `A`,但作为一个 `char` 而不是一个 `string`,这就是 _and 当您向字符串添加某些内容时,它被“附加”到它_ 似乎暗示的意思。 (2认同)

der*_*her 5

你的期望是错误的。该char类型是数字型,可容纳整数。所以当你做

Convert.ToChar(65)
Run Code Online (Sandbox Code Playgroud)

你仍然有一个值为 65 的数字。所以当你这样做时

Convert.ToChar(65) +1
Run Code Online (Sandbox Code Playgroud)

您将 char 隐式转换回 int 并添加 +1,因此您得到 66

char 区别于其他数字类型的特殊之处在于,当您将其转换为字符串时,它会显示为我们从字母表中知道的“字符”。因此,当你做

Convert.ToChar(65) + "1"
Run Code Online (Sandbox Code Playgroud)

值为 65 的字符被隐式转换为字符串 ( "A"),然后与字符串连接"1"。因此结果是"A1"