C# (char)int的符号来自哪里?

C# (char)int的符号来自哪里?,c#,char,C#,Char,作为一名计算机编程新手,我的家庭作业涉及到使用扑克牌套装符号。在我的研究过程中,我发现了一种检索符号的简单方法: Console.Write((char)6); 给你♠ Console.Write((char)3); 给你♥ 等等 然而,我仍然不明白C#用什么逻辑来检索这些符号。我的意思是♠ Unicode表中的符号是U+2660,但我没有使用它。ASCII表甚至不包含这些符号 所以我的问题是,(char)int背后的逻辑是什么 对于这些较低的数字(低于32),这是控制台的一个方面,

作为一名计算机编程新手,我的家庭作业涉及到使用扑克牌套装符号。在我的研究过程中,我发现了一种检索符号的简单方法:

 Console.Write((char)6);
给你♠

  Console.Write((char)3);
给你♥

等等

然而,我仍然不明白C#用什么逻辑来检索这些符号。我的意思是♠ Unicode表中的符号是U+2660,但我没有使用它。ASCII表甚至不包含这些符号

所以我的问题是,
(char)int
背后的逻辑是什么

对于这些较低的数字(低于32),这是控制台的一个方面,而不是C#,它来自-尽管它不包括控制台实际使用的其他含义,如制表符、回车符和钟形符。这对于没有直接在控制台窗口中运行的任何上下文来说都是不可移植的,因此您应该使用例如0x2660,或者只使用
'\u2660'

(char)int
背后的逻辑是
char
是一个UTF-16代码单元,其中一个或两个编码一个码点。代码点自然是序数,是字符集成员的标识符。它们通常是用十六进制编写的,特别是Unicode,例如前面有U+

UTF-16是代码点和代码单元之间的映射。16位的代码单元可以作为整数进行运算。由于
char
包含一个代码单元,因此可以将
short
转换为
char
。由于不同的整数类型可以互操作,因此可以将
int
转换为
char

因此,您的short(或int)仅在表示只有一个代码单元的代码点的UTF-16代码单元时才具有文本意义。(也可以转换包含整数的整数。)

当然,您可以让编译器为您解决问题,也可以让您的读者更轻松地阅读: 控制台。写入('♥');

另外,忘记ASCII。它从来都不是正确的编码(除非是正确的编码)。如果不清楚,字符串就是UTF-16代码单元的计数序列