Dela via


Självstudie: Skapa en enkel C#-konsolapp i Visual Studio (del 1 av 2)

I den här självstudien använder du Visual Studio för att skapa och köra en C#-konsolapp och utforska vissa funktioner i Den integrerade utvecklingsmiljön i Visual Studio (IDE). Den här självstudien är del 1 i en självstudieserie i två delar.

I den här självstudien utför du följande uppgifter:

  • Skapa ett Visual Studio-projekt.
  • Skapa en C#-konsolapp.
  • Felsök din app.
  • Stäng appen.
  • Kontrollera din fullständiga kod.

I del 2 i den här självstudienutökar du den här appen för att lägga till fler projekt, lära dig felsökningstrick och referera till paket som inte kommer från Microsoft.

Förutsättningar

Visual Studio måste vara installerat.

Om du inte har Visual Studio går du till Visual Studio-nedladdningar för att installera det kostnadsfritt.

Skapa ett projekt

Börja genom att skapa ett C#-programprojekt. Projekttypen levereras med alla mallfiler som du behöver.

  1. Öppna Visual Studio och välj Skapa ett nytt projekt i startfönstret.

    Skärmbild som visar fönstret Skapa ett nytt projekt.

  2. I fönstret Skapa ett nytt projekt väljer du C# i listrutan språk. Välj Windows- från plattformslistan och Console från listan med projekttyper.

    När du har tillämpat filter för språk, plattform och projekttyp väljer du mallen Konsolprogram och väljer sedan Nästa.

    Not

    Om du inte ser mallen Konsolprogram väljer du Installera fler verktyg och funktioner.

    Skärmbild som visar länken Installera fler verktyg och funktioner.

    I Visual Studio Installer väljer du .NET Core utveckling för plattformsoberoende arbetsuppgift.

    Skärmbild som visar arbetsbelastningen för .NET Core-plattformsoberoende utveckling i Visual Studio Installer.

    Välj Ändra i Installationsprogrammet för Visual Studio. Du kan uppmanas att spara ditt arbete. Välj Fortsätt för att installera arbetsuppgiften.

    Gå tillbaka till steg 2 i proceduren Skapa ett projekt.

  3. I fönstret Konfigurera det nya projektet skriver eller anger du Kalkylator i rutan Projektnamn. Välj sedan Nästa.

    Skärmbild som visar hur du namnger projektet

  4. I fönstret Ytterligare information kontrollerar du att .NET Core 3.1 visas i fältet Target Framework. Välj sedan Skapa.

    Skärmbild av fönstret Ytterligare information i Visual Studio som visar .NET Core 3.1 som målramverk för det nya projektet.

Visual Studio öppnar ditt nya projekt, som innehåller standardkoden Hello World. Om du vill visa den i redigeraren väljer du kodfilen Program.cs i Solution Explorer-fönstret, som vanligtvis finns till höger i Visual Studio.

Standardkoden Hello World anropar WriteLine-metoden för att visa strängen literal Hello, World! i konsolfönstret. Om du trycker på F5 kan du köra standardprogrammet i felsökningsläge. När programmet har körts i felsökningsprogrammet förblir konsolfönstret öppet. Tryck på valfri tangent för att stänga konsolfönstret.

  1. Öppna Visual Studio och välj Skapa ett nytt projekt i startfönstret.

    Skärmbild som visar fönstret Skapa ett nytt projekt.

  2. I fönstret Skapa ett nytt projekt väljer du C# i listrutan språk. Välj Windows- från plattformslistan och Console från listan med projekttyper.

    När du har tillämpat filter för språk, plattform och projekttyp väljer du mallen Console App och väljer sedan Nästa.

    Not

    Om du inte ser mallen Console App väljer du Installera fler verktyg och funktioner.

    Skärmbild som visar länken Installera fler verktyg och funktioner.

    I Visual Studio Installer väljer du arbetsbelastningen .NET-skrivbordsutveckling.

    Skärmbild som visar arbetsbelastningen för .NET-skrivbordsutveckling i Visual Studio Installer.

    Välj Ändra i Installationsprogrammet för Visual Studio. Du kan uppmanas att spara ditt arbete. Välj Fortsätt för att installera arbetsuppgiften.

    Gå tillbaka till steg 2 i detta Skapa ett projekt-proceduren.

  3. I fönstret Konfigurera ditt nya projekt skriver eller anger du Kalkylator i rutan Projektnamn och väljer sedan Nästa.

    Skärmbild som visar hur du namnger projektet

  4. I fönstret Ytterligare information väljer du .NET 8.0 för fältet Target Framework. Välj sedan Skapa.

    Skärmbild av fönstret Ytterligare information i Visual Studio som visar .NET 8.0 valt som målramverk för det nya projektet.

Visual Studio öppnar ditt nya projekt, som innehåller standardkoden Hello World. Om du vill visa den i redigeraren väljer du kodfilen Program.cs i Solution Explorer-fönstret, som vanligtvis finns till höger i Visual Studio.

Den enkla kodsatsen, anropar metoden WriteLine för att visa den bokstavliga strängen "Hello, World!" i konsolfönstret. Om du trycker på F5 kan du köra standardprogrammet i felsökningsläge. När programmet har körts i felsökningsprogrammet förblir konsolfönstret öppet. Tryck på valfri tangent för att stänga konsolfönstret.

Not

Från och med .NET 6 genererar nya projekt med hjälp av konsolmallen annan kod än tidigare versioner. För mer information, se Nya C#-mallar genererar högnivåuttryck.

Skapa appen

I det här avsnittet utför du följande uppgifter:

  • Utforska grundläggande heltalsmatematik i C#.
  • Lägg till kod för att skapa en grundläggande kalkylatorapp.
  • Felsöka appen för att hitta och åtgärda fel.
  • Förfina koden för att göra den mer effektiv.

Utforska heltalsmatematik

Börja med grundläggande heltalsmatematik i C#.

  1. I den högra rutan väljer du Program.cs för att visa filen i kodredigeraren.

  2. Ta bort standardkoden Hello World i kodredigeraren.

    Skärmbild som visar standardkoden för Hello World som ska tas bort från din nya kalkylatorapp.

    Mer specifikt tar du bort raden som säger Console.WriteLine("Hello World!");.

  3. I stället anger du följande kod:

        int a = 42;
        int b = 119;
        int c = a + b;
        Console.WriteLine(c);
        Console.ReadKey();
    

    Observera att när du anger koden ger intelliSense-funktionen i Visual Studio dig möjlighet att komplettera posten automatiskt.

    Animering av heltalsmatematikkod som visar IntelliSense-funktionen för automatisk komplettering i Visual Studio IDE.

  4. Välj den gröna knappen Starta bredvid Calculator för att skapa och köra programmet, eller tryck på F5.

    Skärmbild som visar knappen Kalkylator för att köra appen från verktygsfältet.

    Ett konsolfönster öppnas som visar summan av 42 + 119, vilket är 161.

    Skärmbild som visar ett konsolfönster med resultatet av heltalsmatematik.

  5. (valfritt) Du kan ändra operatorn för att ändra resultatet. Du kan till exempel ändra operatorn + i int c = a + b; kodrad till - för subtraktion, * för multiplikation eller / för division. När du sedan kör programmet ändras även resultatet.

  6. Stäng konsolfönstret.

  1. I Solution Explorerväljer du Program.cs i den högra rutan för att visa filen i kodredigeraren.

  2. I kodredigeraren ersätter du standardkoden Hello World som säger Console.WriteLine("Hello World!");.

    Skärmbild som visar raden som ska ersättas i programfilen.

    Ersätt raden med följande kod:

        int a = 42;
        int b = 119;
        int c = a + b;
        Console.WriteLine(c);
        Console.ReadKey();
    

    Om du anger koden erbjuder Visual Studios IntelliSense-funktion dig möjligheten att automatiskt komplettera inmatningen.

    Animering av heltalsmatematikkod som visar funktionen IntelliSense autocomplete i Visual Studio IDE.

  3. Om du vill skapa och köra appen trycker du på F5, eller väljer den gröna pilen bredvid namnet Calculator i det övre verktygsfältet.

    Skärmbild som visar hur du väljer knappen Kalkylator för att köra appen från verktygsfältet Felsökning.

    Ett konsolfönster öppnas som visar summan av 42 + 119, vilket är 161.

    Skärmbild av ett konsolfönster som visar resultatet av heltalsmatematik.

  4. Stäng konsolfönstret.

  5. (valfritt) Du kan ändra operatorn för att ändra resultatet. Du kan till exempel ändra operatorn + i int c = a + b; kodrad till - för subtraktion, * för multiplikation eller / för division. När du kör appen ändras resultatet i enlighet med detta.

Lägga till kod för att skapa en kalkylator

Fortsätt genom att lägga till en mer komplex uppsättning kalkylatorkod i projektet.

  1. I kodredigeraren ersätter du all kod i Program.cs med följande nya kod:

        using System;
    
        namespace Calculator
        {
            class Program
            {
                static void Main(string[] args)
                {
                    // Declare variables and then initialize to zero.
                    int num1 = 0; int num2 = 0;
    
                    // Display title as the C# console calculator app.
                    Console.WriteLine("Console Calculator in C#\r");
                    Console.WriteLine("------------------------\n");
    
                    // Ask the user to type the first number.
                    Console.WriteLine("Type a number, and then press Enter");
                    num1 = Convert.ToInt32(Console.ReadLine());
    
                    // Ask the user to type the second number.
                    Console.WriteLine("Type another number, and then press Enter");
                    num2 = Convert.ToInt32(Console.ReadLine());
    
                    // Ask the user to choose an option.
                    Console.WriteLine("Choose an option from the following list:");
                    Console.WriteLine("\ta - Add");
                    Console.WriteLine("\ts - Subtract");
                    Console.WriteLine("\tm - Multiply");
                    Console.WriteLine("\td - Divide");
                    Console.Write("Your option? ");
    
                    // Use a switch statement to do the math.
                    switch (Console.ReadLine())
                    {
                        case "a":
                            Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2));
                            break;
                        case "s":
                            Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2));
                            break;
                        case "m":
                            Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2));
                            break;
                        case "d":
                            Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
                            break;
                    }
                    // Wait for the user to respond before closing.
                    Console.Write("Press any key to close the Calculator console app...");
                    Console.ReadKey();
                }
            }
        }
    
  2. Välj knappen Kalkylator eller tryck på F5 för att köra appen.

    Ett konsolfönster öppnas.

  3. I konsolfönstret följer du anvisningarna för att lägga till siffrorna 42 och 119 tillsammans.

    Appen bör se ut ungefär så här:

    Skärmbild av ett konsolfönster som visar appen Kalkylator med prompter.

  1. I kodredigeraren ersätter du all kod i Program.cs med följande nya kod:

        // Declare variables and then initialize to zero.
        int num1 = 0; int num2 = 0;
    
        // Display title as the C# console calculator app.
        Console.WriteLine("Console Calculator in C#\r");
        Console.WriteLine("------------------------\n");
    
        // Ask the user to type the first number.
        Console.WriteLine("Type a number, and then press Enter");
        num1 = Convert.ToInt32(Console.ReadLine());
    
        // Ask the user to type the second number.
        Console.WriteLine("Type another number, and then press Enter");
        num2 = Convert.ToInt32(Console.ReadLine());
    
        // Ask the user to choose an option.
        Console.WriteLine("Choose an option from the following list:");
        Console.WriteLine("\ta - Add");
        Console.WriteLine("\ts - Subtract");
        Console.WriteLine("\tm - Multiply");
        Console.WriteLine("\td - Divide");
        Console.Write("Your option? ");
    
        // Use a switch statement to do the math.
        switch (Console.ReadLine())
        {
            case "a":
                Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2));
                break;
            case "s":
                Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2));
                break;
            case "m":
                Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2));
                break;
            case "d":
                Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
                break;
        }
        // Wait for the user to respond before closing.
        Console.Write("Press any key to close the Calculator console app...");
        Console.ReadKey();
    
  2. Välj knappen Kalkylator eller tryck på F5 för att köra appen.

    Ett konsolfönster öppnas.

  3. I konsolfönstret följer du anvisningarna för att lägga till siffrorna 42 och 119 tillsammans.

    Appen bör se ut ungefär så här:

    Skärmbild som visar ett konsolfönster med appen Kalkylator med prompter.

Lägg till decimalfunktioner

Nu kan du justera koden för att lägga till fler funktioner.

Den aktuella kalkylatorappen accepterar och returnerar bara heltal. Om du till exempel kör appen och delar numret 42 med talet 119 är resultatet noll, vilket inte är exakt.

Skärmbild av ett konsolfönster som visar kalkylatorappen som returnerar ett inexakt heltal som ett resultat.

Så här åtgärdar du koden för att förbättra precisionen genom att hantera decimaler:

  1. Från Program.cs i Visual Studio-redigeraren trycker du på Ctrl+H för att öppna kontrollen Sök och ersätt.

  2. Skriv int i kontrollfältet och skriv float i Ersätt-fältet .

  3. Välj ikonerna för Matcha skiftläge och Matcha hela ord i kontrollpanelen, eller tryck på Alt+C och Alt+W.

  4. Välj ikonen Ersätt alla eller tryck på Alt+A för att köra sökningen och ersätta.

    Animering av kontrollen Sök och Ersätt som visar hur du ändrar int-variabeln till flyttal.

  5. Kör kalkylatorappen igen och dividera talet 42 med talet 119.

    Appen returnerar nu ett decimaltal i stället för noll.

    Skärmbild av ett konsolfönster som visar kalkylatorappen som nu returnerar ett decimaltal som resultat.

    Nu kan appen generera decimalresultat. Gör några fler justeringar i koden så att appen också kan beräkna decimaler.

  6. Använd kontrollen Sök och Ersätt för att ändra varje instans av variabeln float till doubleoch för att ändra varje instans av metoden Convert.ToInt32 till Convert.ToDouble.

  7. Kör kalkylatorappen och dividera talet 42,5 med talet 119,75.

    Appen accepterar nu decimalvärden och returnerar ett längre decimaltal som resultat.

    Skärmbild av ett konsolfönster som visar appen Kalkylator som nu accepterar decimaltal och returnerar ett längre decimalresultat.

    I avsnittet Revidera koden minskar du antalet decimaler i resultatet.

Felsöka appen

Du har förbättrat din grundläggande kalkylatorapp, men appen hanterar ännu inte undantag, till exempel användarinmatningsfel. Om användarna till exempel försöker dividera med noll eller anger ett oväntat tecken kan appen sluta fungera, returnera ett fel eller returnera ett oväntat icke-numeriskt resultat.

Låt oss gå igenom några vanliga användarindatafel, leta upp dem i felsökningsprogrammet om de dyker upp där och åtgärda dem i koden.

Tips

Mer information om felsökningsprogrammet och hur det fungerar finns i Första titten på Visual Studio-felsökningsprogrammet.

Åtgärda dividera med noll fel

Om du försöker dela upp ett tal med noll kan konsolappen frysa och sedan visa vad som är fel i kodredigeraren.

Skärmbild av Visual Studio-kodredigeraren som visar en rad markerad i gult och ett undantagsfel som inte hanteras för

Not

Ibland fryser inte appen och felsökaren visar inte ett divide-by-zero-fel. I stället kan appen returnera ett oväntat icke-numeriskt resultat, till exempel en oändlighetssymbol. Följande kodkorrigering gäller fortfarande.

Nu ska vi ändra koden för att hantera det här felet. I Program.csersätter du koden för case "d": med följande kod:

            // Ask the user to enter a non-zero divisor until they do so.
                while (num2 == 0)
                {
                    Console.WriteLine("Enter a non-zero divisor: ");
                    num2 = Convert.ToDouble(Console.ReadLine());
                }
                Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2));
                break;

När du har ersatt koden bör avsnittet med switch-instruktionen se ut ungefär så här:

Skärmbild som visar avsnittet med ändrade växlar i Visual Studio-kodredigeraren.

Nu när du delar upp ett tal med noll frågar appen efter ett annat tal och frågar tills du anger ett icke-nolltal.

Skärmbild av ett konsolfönster med en upprepad uppmaning om att ange ett icke-nollnummer.

Åtgärda felet format

Om du anger ett alfabetiskt tecken när appen förväntar sig ett numeriskt tecken låses appen. Visual Studio visar vad som är fel i kodredigeraren.

Skärmbild som visar ett ohanterat formatfel i Visual Studio-kodredigeraren.

Skärmbild som visar ett ohanterat formatfel i Visual Studio-kodredigeraren.

För att förhindra det här undantaget kan du omstrukturera koden som du angav tidigare.

Ändra koden

I stället för att förlita dig på klassen program för att hantera all kod kan du dela upp appen i två klasser: Calculator och Program.

Klassen Calculator hanterar huvuddelen av beräkningsarbetet och klassen Program hanterar användargränssnittet och felhanteringsarbetet.

Nu ska vi komma igång.

  1. I Program.cstar du bort allt och lägger till följande nya Calculator-klass:

    class Calculator
    {
        public static double DoOperation(double num1, double num2, string op)
        {
            double result = double.NaN; // Default value is "not-a-number" if an operation, such as division, could result in an error.
    
            // Use a switch statement to do the math.
            switch (op)
            {
                case "a":
                    result = num1 + num2;
                    break;
                case "s":
                    result = num1 - num2;
                    break;
                case "m":
                    result = num1 * num2;
                    break;
                case "d":
                    // Ask the user to enter a non-zero divisor.
                    if (num2 != 0)
                    {
                        result = num1 / num2;
                    }
                    break;
                // Return text for an incorrect option entry.
                default:
                    break;
            }
            return result;
        }
    }
    
    
  2. Lägg också till en ny Program-klass enligt följande:

    class Program
    {
        static void Main(string[] args)
        {
            bool endApp = false;
            // Display title as the C# console calculator app.
            Console.WriteLine("Console Calculator in C#\r");
            Console.WriteLine("------------------------\n");
    
            while (!endApp)
            {
                // Declare variables and set to empty.
                string numInput1 = "";
                string numInput2 = "";
                double result = 0;
    
                // Ask the user to type the first number.
                Console.Write("Type a number, and then press Enter: ");
                numInput1 = Console.ReadLine();
    
                double cleanNum1 = 0;
                while (!double.TryParse(numInput1, out cleanNum1))
                {
                    Console.Write("This is not valid input. Please enter a numeric value: ");
                    numInput1 = Console.ReadLine();
                }
    
                // Ask the user to type the second number.
                Console.Write("Type another number, and then press Enter: ");
                numInput2 = Console.ReadLine();
    
                double cleanNum2 = 0;
                while (!double.TryParse(numInput2, out cleanNum2))
                {
                    Console.Write("This is not valid input. Please enter a numeric value: ");
                    numInput2 = Console.ReadLine();
                }
    
                // Ask the user to choose an operator.
                Console.WriteLine("Choose an operator from the following list:");
                Console.WriteLine("\ta - Add");
                Console.WriteLine("\ts - Subtract");
                Console.WriteLine("\tm - Multiply");
                Console.WriteLine("\td - Divide");
                Console.Write("Your option? ");
    
                string op = Console.ReadLine();
    
                try
                {
                    result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
                    if (double.IsNaN(result))
                    {
                        Console.WriteLine("This operation will result in a mathematical error.\n");
                    }
                    else Console.WriteLine("Your result: {0:0.##}\n", result);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
                }
    
                Console.WriteLine("------------------------\n");
    
                // Wait for the user to respond before closing.
                Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
                if (Console.ReadLine() == "n") endApp = true;
    
                Console.WriteLine("\n"); // Friendly linespacing.
            }
            return;
        }
    }
    
  3. Välj knappen Kalkylator eller tryck på F5 för att köra appen.

  4. Följ anvisningarna och dividera talet 42 med talet 119. Resultatet bör se ut ungefär så här:

    Skärmbild som visar ett konsolfönster med den omstrukturerade kalkylatorappen.

    Nu kan du köra fler beräkningar tills du väljer att stänga konsolappen. Det finns också färre decimaler i resultatet. Och om du anger ett felaktigt tecken får du ett lämpligt felsvar.

Ändra koden

I stället för att förlita dig på klassen program för att hantera all kod kan du dela upp appen i två klasser: Calculator och Program.

Klassen Calculator hanterar huvuddelen av beräkningsarbetet och klassen Program hanterar användargränssnittet och felhanteringsarbetet.

Nu ska vi komma igång.

  1. I Program.cstar du bort allt och lägger till följande nya Calculator-klass:

    class Calculator
    {
        public static double DoOperation(double num1, double num2, string op)
        {
            double result = double.NaN; // Default value is "not-a-number" if an operation, such as division, could result in an error.
    
            // Use a switch statement to do the math.
            switch (op)
            {
                case "a":
                    result = num1 + num2;
                    break;
                case "s":
                    result = num1 - num2;
                    break;
                case "m":
                    result = num1 * num2;
                    break;
                case "d":
                    // Ask the user to enter a non-zero divisor.
                    if (num2 != 0)
                    {
                        result = num1 / num2;
                    }
                    break;
                // Return text for an incorrect option entry.
                default:
                    break;
            }
            return result;
        }
    }
    
    
  2. Lägg också till en ny Program-klass enligt följande:

    class Program
    {
        static void Main(string[] args)
        {
            bool endApp = false;
            // Display title as the C# console calculator app.
            Console.WriteLine("Console Calculator in C#\r");
            Console.WriteLine("------------------------\n");
    
            while (!endApp)
            {
                // Declare variables and set to empty.
                // Use Nullable types (with ?) to match type of System.Console.ReadLine
                string? numInput1 = "";
                string? numInput2 = "";
                double result = 0;
    
                // Ask the user to type the first number.
                Console.Write("Type a number, and then press Enter: ");
                numInput1 = Console.ReadLine();
    
                double cleanNum1 = 0;
                while (!double.TryParse(numInput1, out cleanNum1))
                {
                    Console.Write("This is not valid input. Please enter a numeric value: ");
                    numInput1 = Console.ReadLine();
                }
    
                // Ask the user to type the second number.
                Console.Write("Type another number, and then press Enter: ");
                numInput2 = Console.ReadLine();
    
                double cleanNum2 = 0;
                while (!double.TryParse(numInput2, out cleanNum2))
                {
                    Console.Write("This is not valid input. Please enter a numeric value: ");
                    numInput2 = Console.ReadLine();
                }
    
                // Ask the user to choose an operator.
                Console.WriteLine("Choose an operator from the following list:");
                Console.WriteLine("\ta - Add");
                Console.WriteLine("\ts - Subtract");
                Console.WriteLine("\tm - Multiply");
                Console.WriteLine("\td - Divide");
                Console.Write("Your option? ");
    
                string? op = Console.ReadLine();
    
                // Validate input is not null, and matches the pattern
                if (op == null || ! Regex.IsMatch(op, "[a|s|m|d]"))
                {
                   Console.WriteLine("Error: Unrecognized input.");
                }
                else
                { 
                   try
                   {
                      result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
                      if (double.IsNaN(result))
                      {
                         Console.WriteLine("This operation will result in a mathematical error.\n");
                      }
                      else Console.WriteLine("Your result: {0:0.##}\n", result);
                    }
                    catch (Exception e)
                    {
                       Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
                    }
                }
                Console.WriteLine("------------------------\n");
    
                // Wait for the user to respond before closing.
                Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
                if (Console.ReadLine() == "n") endApp = true;
    
                Console.WriteLine("\n"); // Friendly linespacing.
            }
            return;
        }
    }
    

    Not

    Det är bäst att använda null-typer (med symbolen ?) för indatasträngarna, eftersom System.Console.ReadLine returnerar en null-referenstyp.

  3. Välj knappen Kalkylator eller tryck på F5 för att köra appen.

  4. Följ anvisningarna och dividera talet 42 med talet 119. Resultatet bör se ut ungefär så här:

    Skärmbild som visar ett konsolfönster med den omstrukturerade kalkylatorappen.

    Nu kan du köra fler beräkningar tills du väljer att stänga konsolappen. Det finns också färre decimaler i resultatet. Och om du anger ett felaktigt tecken får du ett lämpligt felsvar.

Stäng appen

  1. Om du inte redan har gjort det stänger du appen Kalkylator.

  2. Stäng utdatafönstret i Visual Studio.

    Skärmbild som visar hur du stänger Output-fönstret i Visual Studio.

  3. I Visual Studio trycker du på Ctrl+S för att spara appen.

Lägg till Git-källkontroll

Nu när du har ett program kanske du vill lägga till det i en Git-lagringsplats. Visual Studio gör processen enkel med Git-verktyg som du kan använda direkt från IDE.

Tips

Git är det mest använda moderna versionskontrollsystemet. Oavsett om du är en professionell utvecklare eller om du lär dig att koda kan Git vara mycket användbart. Om du är nybörjare på Git är https://git-scm.com/ webbplats ett bra ställe att börja på. Du hittar fuskark, en populär onlinebok och Git Basics-videor.

Om du vill associera din kod med Git börjar du med att skapa en ny Git-lagringsplats där koden finns:

  1. I statusfältet längst ned till höger i Visual Studio väljer du Lägg till i källkontrolloch väljer sedan Git.

    Skärmbild som visar hur du kommer åt git-källkontrollåtgärden från Lägg till i källkontroll i Visual Studio.

  2. I dialogrutan Skapa en Git-lagringsplats loggar du in på GitHub:

    Skärmbild av dialogrutan Skapa en Git-lagringsplats där du kan logga in på GitHub.

    Lagringsplatsens namn fylls i automatiskt baserat på din mappplats. Den nya lagringsplatsen är privat som standard, vilket innebär att du är den enda som kan komma åt den.

    Tips

    Oavsett om lagringsplatsen är offentlig eller privat är det bäst att ha en fjärrsäkerhetskopia av koden lagrad på ett säkert sätt på GitHub. Även om du inte arbetar med ett team gör en fjärrlagringsplats din kod tillgänglig för dig från valfri dator.

  3. Välj Skapa och pusha. När du har skapat lagringsplatsen visas statusinformation i statusfältet:

    Skärmbild av lagringsplatsens statusfält under rutan Solution Explorer i Visual Studio.

Använda Git-åtgärder i Visual Studio

Här är en kort sammanfattning av Git-åtgärder som är tillgängliga i Statusfältet i Visual Studio:

  • Pilarna upp/ned visar hur många utgående/inkommande commits som finns i den aktuella grenen. Du kan använda den här ikonen för att hämta inkommande commits eller skicka utgående commits.

  • Om du vill visa en specifik incheckning väljer du pilen upp/ned och väljer sedan Visa utgående/inkommande.

  • Pencil- visar antalet oengagerade ändringar i din kod. Du kan välja den här ikonen om du vill visa ändringarna i fönstret Git-ändringar.

Menyn Git innehåller verktyg för lagringsplatsåtgärder på dina filer. Du kan använda git fetch, pull, push och sync för versionskontroll i Visual Studio.

Mer information om hur du använder Git med din app finns i Om Git i Visual Studio.

Granska: Koden har slutförts

I den här handledningen har du gjort många ändringar i kalkylator-appen. Appen hanterar nu datorkraft mer effektivt och hanterar de flesta fel vid användarinmatning.

Här är den fullständiga koden, allt på ett ställe:


class Calculator
{
    public static double DoOperation(double num1, double num2, string op)
    {
        double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.

        // Use a switch statement to do the math.
        switch (op)
        {
            case "a":
                result = num1 + num2;
                break;
            case "s":
                result = num1 - num2;
                break;
            case "m":
                result = num1 * num2;
                break;
            case "d":
                // Ask the user to enter a non-zero divisor.
                if (num2 != 0)
                {
                    result = num1 / num2;
                }
                break;
            // Return text for an incorrect option entry.
            default:
                break;
        }
        return result;
    }
}

class Program
{
    static void Main(string[] args)
    {
        bool endApp = false;
        // Display title as the C# console calculator app.
        Console.WriteLine("Console Calculator in C#\r");
        Console.WriteLine("------------------------\n");

        while (!endApp)
        {
            // Declare variables and set to empty.
            string numInput1 = "";
            string numInput2 = "";
            double result = 0;

            // Ask the user to type the first number.
            Console.Write("Type a number, and then press Enter: ");
            numInput1 = Console.ReadLine();

            double cleanNum1 = 0;
            while (!double.TryParse(numInput1, out cleanNum1))
            {
                Console.Write("This is not valid input. Please enter a numeric value: ");
                numInput1 = Console.ReadLine();
            }

            // Ask the user to type the second number.
            Console.Write("Type another number, and then press Enter: ");
            numInput2 = Console.ReadLine();

            double cleanNum2 = 0;
            while (!double.TryParse(numInput2, out cleanNum2))
            {
                Console.Write("This is not valid input. Please enter a numeric value: ");
                numInput2 = Console.ReadLine();
            }

            // Ask the user to choose an operator.
            Console.WriteLine("Choose an operator from the following list:");
            Console.WriteLine("\ta - Add");
            Console.WriteLine("\ts - Subtract");
            Console.WriteLine("\tm - Multiply");
            Console.WriteLine("\td - Divide");
            Console.Write("Your option? ");

            string op = Console.ReadLine();

            try
            {
                result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
                if (double.IsNaN(result))
                {
                    Console.WriteLine("This operation will result in a mathematical error.\n");
                }
                else Console.WriteLine("Your result: {0:0.##}\n", result);
            }
            catch (Exception e)
            {
                Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
            }

            Console.WriteLine("------------------------\n");

            // Wait for the user to respond before closing.
            Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
            if (Console.ReadLine() == "n") endApp = true;

            Console.WriteLine("\n"); // Friendly linespacing.
        }
        return;
    }
}


class Calculator
{
    public static double DoOperation(double num1, double num2, string op)
    {
        double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.

        // Use a switch statement to do the math.
        switch (op)
        {
            case "a":
                result = num1 + num2;
                break;
            case "s":
                result = num1 - num2;
                break;
            case "m":
                result = num1 * num2;
                break;
            case "d":
                // Ask the user to enter a non-zero divisor.
                if (num2 != 0)
                {
                    result = num1 / num2;
                }
                break;
            // Return text for an incorrect option entry.
            default:
                break;
        }
        return result;
    }
}

class Program
{
    static void Main(string[] args)
    {
        bool endApp = false;
        // Display title as the C# console calculator app.
        Console.WriteLine("Console Calculator in C#\r");
        Console.WriteLine("------------------------\n");

        while (!endApp)
        {
            // Declare variables and set to empty.
            // Use Nullable types (with ?) to match type of System.Console.ReadLine
            string? numInput1 = "";
            string? numInput2 = "";
            double result = 0;

            // Ask the user to type the first number.
            Console.Write("Type a number, and then press Enter: ");
            numInput1 = Console.ReadLine();

            double cleanNum1 = 0;
            while (!double.TryParse(numInput1, out cleanNum1))
            {
                Console.Write("This is not valid input. Please enter a numeric value: ");
                numInput1 = Console.ReadLine();
            }

            // Ask the user to type the second number.
            Console.Write("Type another number, and then press Enter: ");
            numInput2 = Console.ReadLine();

            double cleanNum2 = 0;
            while (!double.TryParse(numInput2, out cleanNum2))
            {
                Console.Write("This is not valid input. Please enter a numeric value: ");
                numInput2 = Console.ReadLine();
            }

            // Ask the user to choose an operator.
            Console.WriteLine("Choose an operator from the following list:");
            Console.WriteLine("\ta - Add");
            Console.WriteLine("\ts - Subtract");
            Console.WriteLine("\tm - Multiply");
            Console.WriteLine("\td - Divide");
            Console.Write("Your option? ");

            string? op = Console.ReadLine();

            // Validate input is not null, and matches the pattern
            if (op == null || ! Regex.IsMatch(op, "[a|s|m|d]"))
            {
                Console.WriteLine("Error: Unrecognized input.");
            }
            else
            { 
                try
                {
                    result = Calculator.DoOperation(cleanNum1, cleanNum2, op);
                    if (double.IsNaN(result))
                    {
                        Console.WriteLine("This operation will result in a mathematical error.\n");
                    }
                    else Console.WriteLine("Your result: {0:0.##}\n", result);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message);
                }
            }
            Console.WriteLine("------------------------\n");

            // Wait for the user to respond before closing.
            Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: ");
            if (Console.ReadLine() == "n") endApp = true;

            Console.WriteLine("\n"); // Friendly linespacing.
        }
        return;
    }
}

Nästa steg

Fortsätt med den andra delen av den här självstudien: