C# 如何修复显示此错误的以下代码

C# 如何修复显示此错误的以下代码,c#,C#,下面的代码连接双变量 例如,第一个数字是2 第二个是3 它是这样添加的2+3 23 using System; public static class Program { public static void Main() { double num01; double num02; Console.WriteLine("Add"); Console.Write("type a number: ");

下面的代码连接双变量

例如,第一个数字是
2
第二个是
3
它是这样添加的
2+3
23

using System;


public static class Program 
{
    public static void Main() 
    {
        double num01;
        double num02;

        Console.WriteLine("Add");
        Console.Write("type a number: ");
        num01 = Convert.ToInt32(Console.ReadLine());
        Console.Write("type another number: ");
        num02 = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("the result is " + num01 + num02);
        Console.ReadKey();
    }
}


您没有将两个整数相加,而是将一个字符串加上了另外两个数字的后缀

字符串连接也很慢。您应该使用string.Format或字符串插值

Console.WriteLine(string.Format("the result is {0}", num01 + num02) );

发生了什么事:为了

 "the result is " + num01 + num02
我们有

  • “结果是”+num01
    ,这是
    “结果是1”
    (向
    字符串添加
    double
  • “结果是1”+num02
    ,这是
    “结果是12”
    (向字符串添加
    双精度
  • 你能做什么:把
    (…)
    放到
    “结果是”+(num01+num02)

  • num01+num0
    这是
    3
    (添加两个
    double
    s)
  • “结果是”+3
    ,这是
    “结果是3”
    (向
    字符串添加
    double
  • 所以你可以把
    (…)

    或者(更好的方法)使用字符串插值,让.net为您计算总和:

     Console.WriteLine($"the result is {num01 + num02}");
    
    或格式:

     Console.WriteLine("the result is {0}", num01 + num02);
    

    如果将括号添加到数字的总和,则代码可以正常工作

            double num01;
            double num02;
    
            Console.WriteLine("Add");
            Console.Write("type a number: ");
            num01 = Convert.ToInt32(Console.ReadLine());
            Console.Write("type another number: ");
            num02 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("the result is " + (num01 + num02));
            Console.ReadKey();
    
    但毫无疑问,最佳实践是:

            string.Format
    
    “它是这样添加的2+3;23”

    这是因为您使用的
    +
    上下文将
    2
    3
    视为字符串,并且字符串
    +
    始终执行串联,因此结果
    23

    using System;
    
    
    public static class Program 
    {
        public static void Main() 
        {
            double num01;
            double num02;
    
            Console.WriteLine("Add");
            Console.Write("type a number: ");
            num01 = Convert.ToInt32(Console.ReadLine());
            Console.Write("type another number: ");
            num02 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("the result is " + num01 + num02);
            Console.ReadKey();
        }
    }
    
    你需要做什么来解决问题?

    为什么上述解决方案有效?


    简短回答:运算符优先级。括号具有更高的优先级,并首先求值。当发生这种情况时,num01和num02被视为数字并进行加法。现在这个和值被当作
    +
    中的一个字符串,结果是“

    原因是表达式
    ”,结果是“+num01+num02
    是加法,它包括
    字符串
    ,它使整个操作浓缩,而不是数字相加!如果
    +
    运算符的至少一个操作数是字符串,则它将使其串联

    此外,每隔一个操作数都会转换为字符串,所以数字会转换为字符串,然后进行串联

    为了避免这种情况,强制操作顺序,因此首先添加数字,例如(已在其他答案中显示):
    “结果是”+(num01+num02)


    现在,它将首先对两个数字求和,然后与给定的
    字符串

    连接。当在“字符串”中使用加号运算符时,加号运算符不会将数字相加。您已经有效地编写了“结果是12”
    Console.WriteLine(“结果是”+(num01+num02))
    那么Neil我如何添加下面的代码请告诉我如果
    num01
    num02
    double
    s为什么要使用
    Convert.ToInt32
    ?尝试
    Convert.ToDouble
    然后可以输入1.23和4.56
    Console.WriteLine($“结果是{num01+num02}”)抛出错误
    意外字符$
    您正在使用哪个版本的Visual Studio?
            string.Format
    
    Console.WriteLine("the result is " + (num01 + num02) );