c# - 从字符声明字符串会产生意外结果。为什么会这样呢?

标签 c#

找了半天这个bug。为什么第三种情况会出现意想不到的结果?

        // case 1
        string value1 = "a" + "a" + "A";  
        byte[] asciiBytes1 = Encoding.ASCII.GetBytes(value1); // expected: 97 - 97 - 65
        Console.WriteLine(string.Join(" - ", asciiBytes1));   //   result: 97 - 97 - 65

        // case 2
        string value21 = 'a' + "A"; 
        byte[] asciiBytes21 = Encoding.ASCII.GetBytes(value21); // expected: 97 - 65
        Console.WriteLine(string.Join(" - ", asciiBytes21));    //   result: 97 - 65 

        // case 3
        string value22 = 'a' + 'a' + "A"; 
        byte[] asciiBytes22 = Encoding.ASCII.GetBytes(value22); // expected: 97 - 97 - 65
        Console.WriteLine(string.Join(" - ", asciiBytes22));    //   result: 49 - 57 - 52 - 65

最佳答案

这是操作的顺序,在所有其他示例中,您都将字符添加到字符串中。然而,在第三个示例中,您将一个字符添加到一个字符,该字符充当字节并进行整数乘法。

然后将它的整数添加到字符串“A”

所以 'a' + 'a' = 194 194 + “A” = 197A

这就是您看到的结果

关于c# - 从字符声明字符串会产生意外结果。为什么会这样呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64861918/

相关文章:

c# - 无法翻译 LINQ 表达式,将对其求值

javascript - 如何在 Content Grabber 中使用 C# 调用 javascript 函数?

c# - .NET Framework 和兼容性

c# - 用于迭代关联值集的模式是什么?

c# - 使用 C# 在 dataGridView 中显示位图

c# - 本地日期时间存储在 MongoDb 中,同时从 C# 发送 UTC 日期时间

c# - 为什么 char 数组在控制台上显示内容,而 string 和 int 数组不在 c# 中?

c# - foreach 中匿名委托(delegate)的问题

c# - AutoSuggestBox 不显示结果

c# - 如何将可变参数传递给根据参数数量调用特定函数的函数?