Поделиться через


Руководство. Создание простого консольного приложения C# в Visual Studio (часть 1 из 2)

В этом руководстве вы используете Visual Studio для создания и запуска консольного приложения C# и изучения некоторых функций интегрированной среды разработки Visual Studio (IDE). Это руководство - часть 1 из двухчастной серии.

В этом руководстве вы выполните следующие задачи:

  • Создайте проект Visual Studio.
  • Создайте консольное приложение C#.
  • Отладка приложения.
  • Закройте приложение.
  • Проверьте полный код.

В части 2вы расширяете это приложение, чтобы добавить дополнительные проекты, освоить методы отладки и ссылаться на сторонние пакеты.

Необходимые условия

Необходимо установить Visual Studio.

Если вы еще не установили Visual Studio, перейдите на страницу загрузки Visual Studio, чтобы установить его бесплатно.

Создание проекта

Чтобы начать, создайте проект приложения C#. Тип проекта поставляется со всеми нужными файлами шаблонов.

  1. Откройте Visual Studio и выберите Создать проект в окне "Пуск".

    снимок экрана, на котором показано окно создания проекта.

  2. В окне Создание проекта выберите C# из списка языков. Затем выберите Windows из списка платформ и консоли из списка типов проектов.

    После применения фильтров языков, платформы и типов проекта выберите шаблон Консольное приложение, а затем выберите Далее.

    Заметка

    Если шаблон консольного приложения не отображается, выберите Установить дополнительные средства и компоненты.

    снимок экрана, показывающий ссылку

    В установщике Visual Studio выберите рабочую нагрузку кроссплатформенной разработки .NET Core.

    Снимок экрана, представляющий кроссплатформенную рабочую среду .NET Core в Установщике Visual Studio.

    Выберите Изменить в установщике Visual Studio. Возможно, вам будет предложено сохранить вашу работу. Выберите Продолжить, чтобы установить рабочую нагрузку.

    Вернитесь к шагу 2 в этой процедуре "создать проект".

  3. В окне Настройка нового проекта введите Калькулятор в поле имени проекта. Затем нажмите кнопку Далее.

    снимок экрана, на котором показано, как назвать проект

  4. В окне Дополнительные сведения убедитесь, что .NET Core 3.1 появится в поле целевой платформы . Затем выберите Создать.

    снимок экрана: окно дополнительных сведений в Visual Studio с .NET Core 3.1 в качестве целевой платформы для нового проекта.

Visual Studio открывает новый проект, который включает в себя код Hello World по умолчанию. Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне обозревателя решений, который обычно находится в правой части Visual Studio.

По умолчанию код Hello World вызывает метод WriteLine для отображения литеральной строки "Hello, World!" в окне консоли. Если нажать клавишу F5, можно запустить программу по умолчанию в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Нажмите любую клавишу, чтобы закрыть окно консоли.

  1. Откройте Visual Studio и выберите Создать проект в окне "Пуск".

    снимок экрана, на котором показано окно создания проекта.

  2. В окне Создать новый проект выберите все языки, а затем выберите C# в раскрывающемся списке. Выберите Windows в списке Все платформы и выберите Консоль из списка Все типы проектов.

    После применения фильтров языков, платформы и типов проекта выберите шаблон консольного приложения , а затем нажмите кнопку Далее.

    Заметка

    Если шаблон консольного приложения не отображается, выберите Установить дополнительные средства и компоненты.

    снимок экрана, показывающий ссылку

    В установщике Visual Studio выберите компонент разработки настольных приложений .NET.

    Снимок экрана, показывающий рабочую нагрузку .NET разработки для настольных приложений в установщике Visual Studio.

    Выберите Изменить в установщике Visual Studio. Возможно, вам будет предложено сохранить вашу работу. Выберите Продолжить, чтобы установить рабочую нагрузку.

    Вернитесь к шагу 2 в этой процедуре "создать проект".

  3. В окне Настройка нового проекта введите калькулятор в поле Имя проекта, а затем выберите Далее.

    снимок экрана, на котором показано, как назвать проект

  4. В окне Дополнительные сведения выберите .NET 8.0 для поля Целевая платформа. Затем выберите Создать.

    снимок экрана: окно дополнительных сведений в Visual Studio, в котором показана платформа .NET 8.0, выбранная в качестве целевой платформы для нового проекта.

Visual Studio открывает новый проект, который включает в себя код Hello World по умолчанию. Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне обозревателя решений, который обычно находится в правой части Visual Studio.

Одна инструкция кода вызывает метод WriteLine для отображения литеральной строки "Hello, World!" в окне консоли. Если нажать клавишу F5, можно запустить программу по умолчанию в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Нажмите любую клавишу, чтобы закрыть окно консоли.

Заметка

Начиная с .NET 6, новые проекты с помощью шаблона консоли создают код, отличный от предыдущих версий. Дополнительные сведения см. на странице Новые шаблоны C# генерируют инструкции верхнего уровня.

Создание приложения

В этом разделе вы выполняете следующие задачи:

  • Ознакомьтесь с некоторыми основными целыми числами в C#.
  • Добавьте код для создания базового приложения калькулятора.
  • Отладка приложения для поиска и исправления ошибок.
  • Уточняйте код, чтобы сделать его более эффективным.

Изучение целочисленной математики

Начните с некоторой базовой целочисленной математики в C#.

  1. В редакторе кода удалите код по умолчанию Hello World.

    снимок экрана, на котором показано удаление кода Hello World по умолчанию из нового приложения калькулятора.

    В частности, удалите строку, где указано Console.WriteLine("Hello World!");.

  2. На его месте введите следующий код:

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

    Обратите внимание, что при вводе кода функция IntelliSense в Visual Studio предлагает возможность автозавершения записи.

    Анимация целочисленного математического кода, отображающего функцию автозаполнения IntelliSense в интегрированной среде разработки Visual Studio.

  3. Нажмите зеленую кнопку "Пуск" рядом с калькулятора , чтобы создать и запустить программу, или нажмите клавишу F5.

    снимок экрана, на котором показано, как выбрать кнопку

    Откроется окно консоли, которое показывает сумму 42 + 119, которая 161.

    снимок экрана: окно консоли с результатами целочисленной математики.

  4. (необязательно) можно изменить оператор, чтобы изменить результат. Например, можно изменить оператор + в строке кода int c = a + b; на - для вычитания, * для умножения или / деления. Затем, когда вы запускаете программу, результат также изменяется.

  5. Закройте окно консоли.

  1. В обозревателе решенийв правой области выберите Program.cs, чтобы отобразить файл в редакторе кода.

  2. В редакторе кода замените код Hello World по умолчанию, который говорит Console.WriteLine("Hello World!");.

    снимок экрана, на котором показана строка для замены в файле программы.

    Замените строку следующим кодом:

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

    Если ввести код, функция IntelliSense Visual Studio предлагает возможность автозавершения записи.

    Анимация целочисленного математического кода, отображающего функцию автозаполнения IntelliSense в интегрированной среде разработки Visual Studio.

  3. Чтобы создать и запустить приложение, нажмите клавишу F5или щелкните зеленую стрелку рядом с именем Калькулятор на верхней панели инструментов.

    снимок экрана, показывающий нажатие кнопки

    Откроется окно консоли, в котором отображается сумма 42 + 119, которая 161.

    снимок экрана окна консоли с результатами целочисленной математики.

  4. Закройте окно консоли.

  5. При необходимости можно изменить оператор, чтобы изменить результат. Например, можно изменить оператор + в строке кода int c = a + b; на - для вычитания, * для умножения или / деления. При запуске приложения результат изменяется соответствующим образом.

Добавление кода для создания калькулятора

Продолжайте добавление более сложного набора кода калькулятора в проект.

  1. В редакторе кода замените весь код в Program.cs следующим новым кодом:

        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. Нажмите кнопку Калькулятор или клавишу F5, чтобы запустить приложение.

    Откроется окно консоли.

  3. В окне консоли следуйте инструкциям, чтобы добавить номера 42 и 119 вместе.

    Приложение должно выглядеть следующим образом:

    снимок экрана окна консоли с запросами приложения калькулятора.

  1. В редакторе кода замените весь код в Program.cs следующим новым кодом:

        // 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. Нажмите кнопку калькулятора или нажмите клавишу F5 F5, чтобы запустить приложение.

    Откроется окно консоли.

  3. В окне консоли следуйте инструкциям, чтобы добавить номера 42 и 119 вместе.

    Приложение должно выглядеть следующим образом:

    снимок экрана окна консоли с запросами приложения калькулятора.

Добавление десятичных функций

Теперь подстройте код, чтобы добавить дополнительные функции.

Текущее приложение калькулятора принимает и возвращает целые числа. Например, если вы запускаете приложение и делите число 42 на число 119, результат равен нулю, который не является точным.

снимок экрана окна консоли, в которой приложение Калькулятор возвращает неточное целое число в результате.

Чтобы исправить код для повышения точности, обрабатывая десятичные разряды:

  1. Из файла Program.cs в редакторе Visual Studio нажмите клавиши Ctrl+H, чтобы открыть элемент управления поиска и замены.

  2. Введите int в элементе управления и введите float в поле Заменить.

  3. Выберите значки для Учитывать регистр и Совпадение целого слова в элементе управления или нажмите клавиши Alt+C и Alt+W.

  4. Выберите значок Заменить все или нажмите клавиши Alt+A для запуска поиска и замены.

    анимация элемента управления

  5. Снова запустите приложение калькулятора и разделите число 42 на число 119.

    Теперь приложение возвращает десятичное число вместо нуля.

    снимок экрана окна консоли с приложением калькулятора, которое теперь возвращает десятичное число в результате.

    Теперь приложение может создавать десятичные результаты. Сделайте несколько дополнительных настроек к коду, чтобы приложение также может вычислить десятичные разряды.

  6. Используйте элемент управления поиска и замены для изменения каждого вхождения переменной float на double, а также для изменения каждого вхождения метода Convert.ToInt32 на Convert.ToDouble.

  7. Запустите приложение калькулятора и разделите число 42,5 на число 119,75.

    Теперь приложение принимает десятичные значения и возвращает более длинное десятичное число в качестве результата.

    снимок экрана окна консоли с приложением калькулятора, которое теперь принимает десятичные числа и возвращает более длинный десятичный результат.

    В разделе Переписать код можно уменьшить количество десятичных знаков в результатах.

Отладка приложения

Вы улучшили базовое приложение калькулятора, но приложение еще не обрабатывает исключения, такие как ошибки ввода пользователей. Например, если пользователи пытаются разделить на ноль или ввести неожиданный символ, приложение может перестать работать, возвращать ошибку или возвращать непредвиденный нечисловой результат.

Давайте рассмотрим несколько распространенных ошибок ввода пользователей, найдите их в отладчике, если они появятся там, и исправим их в коде.

Совет

Дополнительные сведения об отладчике и его работе см. в статье Первый взгляд на отладчик Visual Studio.

Исправлена ошибка "деление на ноль"

Если попытаться разделить число на ноль, консольное приложение может заморозиться и затем показывать, что неправильно в редакторе кода.

снимок экрана редактора кода Visual Studio, показывающий строку, подсвеченную желтым и необработанное исключение с ошибкой 'Попытка разделить на ноль'.

Заметка

Иногда приложение не зависает, и отладчик не отображает ошибку деления на ноль. Вместо этого приложение может вернуть непредвиденный нечисловой результат, такой как символ бесконечности. Следующее исправление кода по-прежнему применяется.

Давайте изменим код для обработки этой ошибки. В Program.csзамените код для case "d": следующим кодом:

            // 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;
        }

После замены кода раздел с оператором switch должен выглядеть примерно так, как на следующем скриншоте:

снимок экрана: измененный раздел переключателя в редакторе кода Visual Studio.

Теперь, когда вы делите любое число на ноль, приложение запрашивает другое число и продолжает запрашивать, пока не укажите ненулевое число.

снимок экрана окна консоли с повторным запросом на предоставление номера, отличного от нуля.

Исправьте ошибку "формат"

Если ввести алфавитный символ, когда приложение ожидает числовой символ, приложение зависает. Visual Studio показывает, что неправильно в редакторе кода.

снимок экрана, показывающий необработанную ошибку формата в редакторе кода Visual Studio.

снимок экрана: ошибка необработанного формата в редакторе кода Visual Studio.

Чтобы предотвратить это исключение, можно рефакторизовать ранее введённый код.

Изменение кода

Вместо того, чтобы использовать класс program для обработки всего кода, можно разделить приложение на два класса: Calculator и Program.

Класс Calculator обрабатывает основную часть работы вычисления, а класс Program обрабатывает пользовательский интерфейс и работу по обработке ошибок.

Давайте начнем.

  1. В Program.csудалите все и добавьте следующий новый класс Calculator:

    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. Кроме того, добавьте новый класс Program следующим образом:

    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. Чтобы запустить приложение, выберите кнопку калькулятора или нажмите F5.

  4. Следуйте инструкциям и разделите число 42 на число 119. Результаты должны выглядеть следующим образом:

    Снимок экрана, показывающий окно консоли с рефакторированным приложением калькулятора.

    Теперь вы можете выполнять дополнительные вычисления, пока не закроете консольное приложение. В результатах также меньше десятичных разрядов. При вводе неправильного знака вы получите соответствующий ответ об ошибке.

Изменение кода

Вместо того, чтобы использовать класс program для обработки всего кода, можно разделить приложение на два класса: Calculator и Program.

Класс Calculator обрабатывает основную часть работы вычисления, а класс Program обрабатывает пользовательский интерфейс и работу по обработке ошибок.

Давайте начнем.

  1. В Program.csудалите все и добавьте следующий новый класс Calculator:

    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. Кроме того, добавьте новый класс Program следующим образом:

    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;
        }
    }
    

    Заметка

    Рекомендуется использовать типы, допускающие значение NULL (с символом ?) для входных строк, так как System.Console.ReadLine возвращает ссылочный тип, допускающий значение NULL,.

  3. Выберите кнопку Калькулятор или нажмите F5, чтобы запустить приложение.

  4. Следуйте инструкциям и разделите число 42 на число 119. Результаты должны выглядеть следующим образом:

    снимок экрана, показывающий окно консоли с рефакторинговым приложением калькулятора.

    Теперь вы можете выполнять дополнительные вычисления, пока не закроете консольное приложение. В результатах также меньше десятичных разрядов. При вводе неправильного знака вы получите соответствующий ответ об ошибке.

Закройте приложение

  1. Если вы еще этого не сделали, закройте приложение Калькулятора.

  2. Закройте область выходных данных в Visual Studio.

    снимок экрана, показывающий закрытие области вывода в Visual Studio.

  3. В Visual Studio нажмите клавиши CTRL +S, чтобы сохранить приложение.

Добавить систему управления версиями Git

Теперь, когда у вас есть приложение, может потребоваться добавить его в репозиторий Git. Visual Studio упрощает этот процесс с помощью средств Git, которые можно использовать непосредственно из интегрированной среды разработки.

Совет

Git является наиболее широко используемой современной системой управления версиями. Будь то профессиональный разработчик или вы узнаете, как кодировать, Git может быть очень полезным. Если вы не знакомы с Git, веб-сайт https://git-scm.com/ является хорошим местом для начала. Вы можете найти памятки, популярную онлайн-книгу и видео Git Basics.

Чтобы связать код с Git, начните с создания нового репозитория Git, где находится ваш код:

  1. В строке состояния в правом нижнем углу Visual Studio выберите Добавить в систему управления версиями, а затем выберите Git.

    Скриншот, показывающий, как получить доступ к действию Git для управления версиями через опцию

  2. В диалоговом окне Создание репозитория Git войдите в GitHub:

    снимок экрана диалогового окна создания репозитория Git, где можно войти в GitHub.

    Имя репозитория автоматически заполняется в зависимости от расположения папки. Новый репозиторий по умолчанию является частным, что означает, что вы единственный, кто может получить к нему доступ.

    Совет (if the context is advice)

    Независимо от того, является ли ваш репозиторий общедоступным или частным, лучше иметь удаленную резервную копию кода, хранящегося безопасно на GitHub. Даже если вы не работаете с командой, удаленный репозиторий делает код доступным для вас с любого компьютера.

  3. Выберите Создать и отправить. После создания репозитория в строке состояния отображаются сведения о состоянии:

    снимок экрана: строка состояния репозитория под областью обозревателя решений в Visual Studio.

Использование действий Git в Visual Studio

Ниже приведены краткие сведения о действиях Git, доступных в строке состояния Visual Studio:

  • Стрелки вверх и вниз показывают, сколько исходящих и входящих коммитов находится в вашей текущей ветке. Этот значок можно использовать для получения любых входящих коммитов или отправки исходящих коммитов.

  • Чтобы просмотреть определённый коммит, щелкните стрелку вверх или вниз, затем Просмотр Исходящих/Входящих.

  • В карандаше отображается количество незафиксированных изменений вашего кода. Этот значок можно выбрать, чтобы просмотреть изменения в окне изменений Git.

Меню Git предоставляет средства для выполнения действий с репозиторием на ваших файлах. Вы можете использовать команды fetch, pull, push и sync для управления версиями в Visual Studio.

Дополнительные сведения об использовании Git с приложением см. в о Git в Visual Studio.

Проверка: код завершен

В этом руководстве вы внесли много изменений в приложение Калькулятор. Теперь приложение обрабатывает вычислительные ресурсы более эффективно и обрабатывает большинство ошибок ввода пользователей.

Вот полный код, все в одном месте:


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;
    }
}

Дальнейшие действия

Продолжайте работу со второй частью этого руководства: