9

我试图将一些 VB.NET 代码转换为 C# 并发现了这个有趣的东西。添加两个字符会在 VB.NET 和 C# 中返回不同的结果。

VB.NET -返回字符串

Chr(1) & Chr(2) = "  "

C# -返回整数

(char)(1) + char(2) = 3

如何在 C# 中添加(连接)两个字符?

4

4 回答 4

15

在 C#char中是 16 位数字类型,因此+表示加法,而不是串联。因此,当您添加ab获得a+b. 此外,此添加的结果是int请参阅快速演示)。

如果“添加两个字符”的意思是“连接”,那么在应用运算符之前将它们转换为字符串+将是一种选择。另一种选择是使用string.Format,如下所示:

string res = string.Format("{0}{1}", charA, charB);
于 2013-08-20T12:52:03.543 回答
5

通过添加到一个空字符串,您可以强制“转换”charstring... 所以

string res = "" + (char)65 + (char)66; // AB

(从技术上讲,这不是转换。编译器知道,当您添加到 a 时,string它必须做一些魔术......如果您尝试添加null到字符串,它认为 thenull是一个空字符串,如果您尝试添加string它执行 astring.Concat并且如果您尝试添加任何其他内容,它会.ToString()在非字符串成员上执行 a 然后string.Concat)

于 2013-08-20T12:58:59.780 回答
3

最好的答案在评论中,所以我想在这里将其提升为正确的答案。完全归功于@Jeow Li Huan:

string res = string.Concat(charA, charB);
于 2017-07-24T17:45:56.133 回答
0

(char)(1) 的 ascii 值为 1, (char)(2) 的 ascii 值为 2

所以 1 + 2 的 ascii 值(即 (char)1 + (char)2 )将等于 3。

如果你这样做:“2”+“1”这会给你“21”(你不应该用它来连接字符串,不好的做法)

如果你这样做:'2' + '1' 这会给你 int 值 99,即 ascii 值 2(即 50)+ ascii 值 1(即 49)。

于 2013-08-20T13:01:04.690 回答