Управление версиями языка C#
Компилятор C# последней версии определяет версию языка по умолчанию на основе целевой платформы или платформ проекта. Visual Studio не предоставляет пользовательский интерфейс для изменения этого значения, но его можно изменить, отредактировав файл CSPROJ. Выбор значения по умолчанию гарантирует, что вы используете последнюю версию языка, совместимую с вашей целевой платформой. Вы получите преимущество в виде доступа к последним функциям языка, совместимым с целевым объектом проекта. Этот вариант по умолчанию также гарантирует, что вы не будете использовать язык, который требует такие типы или поведение во время выполнения, которые недоступны в целевой платформе. Выбор более новой версии языка, чем значение по умолчанию, может усложнить диагностику ошибок во время компиляции и выполнения.
C# 12 поддерживается только в .NET 8 и более новых версиях. C# 11 поддерживается только в .NET 7 и более новых версиях. C# 10 поддерживается только в .NET 6 и более новых версиях.
Проверьте страницу совместимости платформы Visual Studio, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio. Ознакомьтесь со страницей совместимости Visual Studio для Mac платформы, чтобы узнать, какие версии .NET поддерживаются версиями Visual Studio для Mac. Проверьте страницу Mono для C# для совместимости Mono с версиями C# .
Defaults
Компилятор определяет значение по умолчанию на основе следующих правил:
| Назначение | Версия | Версия языка C# по умолчанию |
|---|---|---|
| .NET | 8.x | C# 12 |
| .NET | 7.x | C# 11 |
| .NET | 6.x | C# 10 |
| .NET | 5.x | C# 9.0 |
| .NET Core | 3.x | C# 8.0 |
| .NET Core | 2.x | C# 7.3 |
| .NET Standard | 2.1 | C# 8.0 |
| .NET Standard | 2.0 | C# 7.3 |
| .NET Standard | 1.x | C# 7.3 |
| .NET Framework | all | C# 7.3 |
Если проект предназначен для preview платформы с соответствующей версией языка предварительной версии, используется языковая версия предварительной версии. Вы можете использовать новейшие возможности в этой предварительной версии в любой среде, не затрагивая проекты, предназначенные для выпущенной версии .NET Core.
Новый шаблон проекта для Visual Studio 2017 добавил
Переопределите значение по умолчанию
Если необходимо явно указать версию C#, это можно сделать несколькими способами:
- Вручную изменить файл проекта.
- задание языковой версии для нескольких проектов в подкаталоге;
- Настройте параметр компилятора LangVersion.
Языковая версия в Visual Studio отображается на странице свойств проекта. На вкладке «Сборка » на панели «Дополнительно» отображается выбранная версия.
Чтобы узнать, какую версию языка вы используете в данный момент, поставьте #error version (с учетом регистра) в коде. Это позволяет компилятору вывести ошибку CS8304 с сообщением, содержащим сведения об используемой версии компилятора и текущей выбранной версии языка. Дополнительные сведения см. в статье #error (справочник по C#).
Изменение файла проекта
Версию языка можно задать в файле проекта. Например, если доступ к предварительной версии функций должен быть задан явным образом, можно добавить следующий элемент:
preview
Значение preview использует последнюю предварительную версию языка C#, которую поддерживает компилятор.
Настройка нескольких проектов
Чтобы настроить несколько проектов, можно создать файл Directory.Build.props , как правило, в каталоге решения, который содержит элемент. Добавьте следующий параметр в файл Directory.Build.props :
preview
Сборки во всех подкаталогах каталога, содержащего этот файл, теперь используют предварительную версию C#. Дополнительные сведения см. в статье Настройка сборки.
Справочник по версиям языка C#
В следующей таблице показаны все текущие версии языка C#. Старые компиляторы могут не понимать каждое значение. Если установить последний пакет SDK для .NET, у вас есть доступ ко всем перечисленным.
| Значение | Значение |
|---|---|
| preview | Компилятор допускает использование любого допустимого синтаксиса языка из последней предварительной версии. |
| latest | Компилятор принимает синтаксис из последней выпущенной версии компилятора (включая дополнительный номер версии). |
| latestMajor или default |
Компилятор принимает синтаксис из последней основной версии компилятора. |
| 12.0 | Компилятор принимает только синтаксис, включенный в C# 12 или ниже. |
| 11.0 | Компилятор принимает только синтаксис, включенный в C# 11 или ниже. |
| 10.0 | Компилятор принимает только синтаксис, включенный в спецификацию C# 10 или более ранних версий. |
| 9.0 | Компилятор принимает только синтаксис, включенный в спецификацию C# 9 или более ранних версий. |
| 8.0 | Компилятор принимает только синтаксис, включенный в спецификацию C# 8.0 или более ранней версии. |
| 7.3 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.3 или более ранней версии. |
| 7.2 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.2 или более ранней версии. |
| 7.1 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.1 или более ранней версии. |
| 7 | Компилятор принимает только синтаксис, включенный в спецификацию C# 7.0 или более ранней версии. |
| 6 | Компилятор принимает только синтаксис, включенный в спецификацию C# 6.0 или более ранней версии. |
| 5 | Компилятор принимает только синтаксис, включенный в спецификацию C# 5.0 или более ранней версии. |
| 4 | Компилятор принимает только синтаксис, включенный в спецификацию C# 4.0 или более ранней версии. |
| 3 | Компилятор принимает только синтаксис, включенный в спецификацию C# 3.0 или более ранней версии. |
| ISO-2 или 2 |
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2006 C# (2.0). |
| ISO-1 или 1 |
Компилятор принимает только синтаксис, включенный в спецификацию ISO/IEC 23270:2003 C# (1.0/1.2). |
Указание LangVersion со значением отличается от пропуска параметра LangVersion . default Указание default последней версии языка, который поддерживает компилятор, без учета целевой платформы. Например, создание проекта, предназначенного для .NET 6 из текущей версии Visual Studio 2022, использует C# 10, если LangVersion не указан, но использует C# 11, если LangVersion имеет значение default .
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Запуск программы C# в Visual Studio
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Способ запуска программы зависит от того, с чего вы начинаете, от типа программы и от необходимости использовать отладчик. В самом простом случае для сборки и запуска открытого проекта в Visual Studio выполните следующие действия.
- Нажмите клавишу F5, выберите Отладка>Начать с отладки в меню Visual Studio или выберите зеленую стрелку Запуск и имя проекта на панели инструментов Visual Studio.
- Для запуска без отладки нажмите клавиши CTRL+F5 или выберите Отладка>Запуск без отладки в меню Visual Studio.


Запуск из проекта
Вы можете запустить проект C# или CSPROJ-файл, если это готовая к запуску программа. Если проект содержит файл C# с методом Main , а его выходные данные представляют собой исполняемый файл (EXE), скорее всего, он запустится в случае успешной сборки. Более новые версии C# не требуют Main метода. Вместо этого выполнение программ начинается с инструкций верхнего уровня. См. статью «Программы без основных методов».
- Если код программы уже находится в проекте Visual Studio, откройте проект. Для этого дважды щелкните CSPROJ-файл в проводнике Windows или выберите пункт Открыть проект в Visual Studio, найдите CSPROJ-файл и выберите его.
- После загрузки проекта в Visual Studio, если решение Visual Studio содержит несколько проектов, убедитесь, что для проекта задан метод Main , чтоб он считался запускаемым проектом. Чтобы задать запускаемый проект, щелкните имя проекта или узел правой кнопкой мыши в Обозревателе решений, затем выберите пункт Назначить запускаемым проектом в контекстном меню.


Запуск из кода
Если вы выполняете запуск из листинга кода, файла кода или небольшого числа файлов, сначала убедитесь, что запускаемый код происходит из надежного источника и является запускаемой программой. Любое приложение с Main методом, вероятно, является запущенной программой, но с текущей версией C#, программы без Main методов с операторами верхнего уровня также могут выполняться. Вы можете использовать шаблон консольного приложения, чтобы создать проект для работы с приложением в Visual Studio.
Листинг кода для отдельного файла
- Запустите Visual Studio и откройте пустой проект консольного приложения C#.
- Замените весь код в CS-файле проекта содержимым листинга кода или файла.
- Переименуйте CS-файл проекта в соответствии с именем файла кода.
Несколько листингов кода или файлов на диске
- Запустите Visual Studio и создайте новый проект соответствующего типа. Если вы не уверены, используйте консольное приложение C#.
- В новом проекте замените весь код в файле кода проекта на содержимое первого листинга кода или файла.
- Переименуйте файл кода проекта в соответствии с именем файла кода.
- Для каждого оставшегося файла кода:
- Щелкните правой кнопкой мыши узел проекта в Обозревателе решений и выберите пункт Добавить>Существующий элемент или выберите проект и нажмите клавиши SHIFT+ALT+A.
- Найдите и выберите файл кода, чтобы импортировать его в проект.
Несколько файлов в папке
Если у вас есть папка с большим количеством файлов, сначала найдите файл проекта или решения. Программы, создаваемые Visual Studio, содержат файлы проекта и решения. В проводнике Windows найдите файлы с расширением .csproj или .sln. Дважды щелкните CSPROJ-файл, чтобы открыть его в Visual Studio. См. раздел Запуск из проекта или решения Visual Studio.
Если код находится в другой среде разработки, файл проекта отсутствует. Откройте папку, выбрав Открыть>Папка в Visual Studio. См. раздел Разработка кода без использования проектов и решений.
Запуск из репозитория Azure DevOps или GitHub
Если код, который вы хотите запустить, находится в GitHub или в репозитории Azure DevOps, можно использовать Visual Studio, чтобы открыть проект непосредственно из репозитория. См. раздел Открытие проекта из репозитория.
Запуск программы
Чтобы начать сборку программы, нажмите зеленую стрелку запуска на панели инструментов Visual Studio либо нажмите клавиши F5 или CTRL+F5. С помощью кнопки Запуск или F5 можно запустить программу в отладчике.
Visual Studio пытается выполнить сборку кода в проекте и запустить его. Если сборка завершится неудачно, ознакомьтесь со следующими разделами, чтобы понять, как успешно собрать проект.
Устранение неполадок
Код может содержать ошибки. Или код может быть правильным, но может быть, он зависит от отсутствующих сборок или пакетов NuGet или предназначен для другой версии .NET. В таких случаях вы можете легко исправить сборку.
Добавление ссылок
Для успешной сборки код должен быть правильным и иметь правильные ссылки на библиотеки или другие зависимости. Красные волнистые линии в коде или записи в списке ошибок показывают ошибки еще перед компиляцией и запуском программы. Если возникают ошибки, связанные с неразрешенными именами, возможно, потребуется добавить ссылку и/или директиву using . Если код ссылается на отсутствующие сборки или пакеты NuGet, необходимо добавить эти ссылки в проект.
Visual Studio пытается помочь определить отсутствующие ссылки. Если имя не разрешено, в редакторе появляется значок лампочки. Если щелкнуть лампочку, можно увидеть некоторые рекомендации по устранению проблемы. Возможные исправления:
- Добавление директивы using
- Добавление ссылки на сборку
- Установка пакета NuGet
Добавление директивы using
Ниже приведен пример отсутствующей директивы using . Добавьте using System; в начало файла кода, чтобы разрешить неразрешенное имя Console .


Более новые версии C# поддерживают неявные директивы using для некоторых часто используемых пространств имен, поэтому если при создании проекта этот параметр не нужен.
Добавление ссылки на сборку
Ссылки .NET могут быть сборками или пакетами NuGet. В исходном коде издатель или автор обычно объясняет, какие сборки требуются коду и от каких пакетов он зависит. Чтобы добавить ссылку в проект вручную, в Обозревателе решений щелкните правой кнопкой мыши узел Ссылки и выберите команду Добавить ссылку. В диспетчере ссылок найдите и добавьте требуемую сборку.


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


Если это не решает проблему и Visual Studio не удается найти пакет, попробуйте выполнить поиск в Интернете. См. раздел Установка и использование пакета NuGet в Visual Studio.
Использование правильной версии .NET
Так как разные версии .NET Framework обеспечивают некоторую степень обратной совместимости, более новая платформа может выполнять код, написанный для более старой платформы, без каких-либо изменений. Но иногда необходимо использовать определенную версию платформа .NET Framework. Вам может потребоваться установить определенную версию .NET Framework или .NET Core. См. раздел Изменение Visual Studio.
Сведения об изменении целевой платформа .NET Framework версии см. в разделе «Изменение целевой платформы». Дополнительные сведения см. в разделе Устранение неполадок, связанных с настройкой для определенных версий платформы .NET Framework.
Следующие шаги
- Изучите среду разработки Visual tudio, прочитав раздел Добро пожаловать в интегрированную среду разработки Visual Studio.
- Создание первого приложения C#.
Как установить си шарп в visual studio 2019
Для создания графических приложений на C# можно использовать .NET CLI, но также можно использовать бесплатную и полнофункциональную среду разработки — Visual Studio Community 2022 , которая в ряде случаев облегчает проектирование приложения. Так, загрузим установщик Visual Studio по адресу: https://www.visualstudio.com/en-us/downloads.

Чтобы добавить в Visual Studio поддержку проектов для Windows Forms и C# и .NET, в программе установки среди рабочих нагрузок нужно выбрать только пункт Разработка классических приложений .NET . Можно выбрать и больше опций или вообще все опции, однако стоит учитывать свободный размер на жестком диске — чем больше опций будет выбрано, соответственно тем больше места на диске будет занято.

После установки среды и всех ее компонентов, запустим Visual Studio и создадим проект графического приложения. На стартовом экране выберем Create a new project (Создать новый проект)

На следующем окне в качестве типа проекта выберем Windows Forms App :

Стоит отметить, что среди шаблонов можно увидеть еще тип Windows Forms App (.NET Framework) — его НЕ надо выбирать, необходим именно тип Windows Forms App .
Далее на следующем этапе нам будет предложено указать имя проекта и каталог, где будет располагаться проект.

В поле Project Name дадим проекту какое-либо название. В моем случае это HelloApp .
На следующем окне Visual Studio предложит нам выбрать версию .NET, которая будет использоваться для проекта. Выберем последнюю на данный момент версию — .NET и нажмен на кнопку Create (Создать) для создания проекта.

После этого Visual Studio откроет наш проект с созданными по умолчанию файлами:

Справа находится окно Solution Explorer, в котором можно увидеть структуру нашего проекта. Практически этот тот же проект, который создается с помощью .NET CLI:
- Dependencies — это узел содержит сборки dll, которые добавлены в проект по умолчанию. Эти сборки как раз содержат классы библиотеки .NET, которые будет использовать C#
- Form1.Designer.cs : он содержит определение компонентов формы, добавленных на форму в графическом дизайнере
- Далее идет файл единственной в проекте формы — Form1.cs , который по умолчанию открыт в центральном окне.
- Program.cs определяет точку входа в приложение
Запуск приложения
Чтобы запустить приложение в режиме отладки, нажмем на клавишу F5 или на зеленую стрелочку на панели Visual Studio.

После этого запустится пустая форма Form1 по умолчанию.

После запуска приложения студия компилирует его в файл с расширением exe. Найти данный файл можно, зайдя в папку проекта и далее в каталог \bin\Debug\net8.0-windows
Рассмотрев вкратце создание проекта графического приложения, мы можем перейти к обзору основных компонентов и начнем мы с форм.
Учебник. Создание простого консольного приложения C# в Visual Studio (часть 1 из 2)
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code 
Изучая этот учебник, вы создадите и запустите консольное приложение C# с помощью Visual Studio, а также ознакомитесь с некоторыми возможностями интегрированной среды разработки (IDE) Visual Studio. Этот учебник представляет собой первую часть серии, состоящей из двух частей.
В этом руководстве выполняются следующие задачи:
- Создание проекта Visual Studio
- Создание консольного приложения C#
- Запустите отладку приложения.
- Закрытие приложения
- Проверка готового кода
В рамках части 2 вы расширите это приложение, добавив дополнительные проекты, изучите методы отладки и будете использовать сторонние пакеты.
Необходимые компоненты
Необходимо установить Visual Studio.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.
Создание проекта
Сначала создайте проект приложения C#. Для этого типа проекта уже имеются все нужные файлы шаблонов.

- Откройте Visual Studio и выберите «Создать проект » в окне «Пуск».
- В окне Создание проекта выберите C# в списке языков. Затем выберите Windows в списке платформ и Консоль в списке типов проектов. Применив фильтры по языку, платформе и типу проекта, выберите шаблон Консольное приложение и щелкните Далее.
Примечание. Если шаблон Консольное приложение не отображается, выберите Установка других средств и компонентов.
В установщике Visual Studio выберите кроссплатформенную рабочую нагрузку разработки .NET Core.
В Visual Studio Installer выберите Изменить. Вам может быть предложено сохранить результаты работы. Нажмите кнопку «Продолжить», чтобы установить рабочую нагрузку. Вернитесь к шагу 2 в процедуре Создание проекта. - В поле Имя проекта окна Настроить новый проект введите Calculator. Затем выберите Далее.

- Убедитесь, что в окне Дополнительные сведения, в поле Целевая платформа отображается значение .NET Core 3.1. Затем выберите Создать.

Visual Studio открывает новый проект, включающий код по умолчанию «Hello World». Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне Обозревателя решений, которое обычно находится в правой части Visual Studio.
Код «Hello World» по умолчанию вызывает метод WriteLine для отображения литеральной строки «Hello, World!» в окне консоли. Если нажать клавишу F5, программа по умолчанию запустится в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Для закрытия окна консоли нажмите любую клавишу.

- Откройте Visual Studio и выберите «Создать проект » в окне «Пуск».
- В окне Создать проект выберите Все языки, а затем в раскрывающемся списке выберите C#. Выберите Windows в списке Все платформы. Затем в списке Все типы проектов выберите Консоль. Применив фильтры по языку, платформе и типу проекта, выберите шаблон Консольное приложение и нажмите Далее.
Примечание. Если шаблон Консольное приложение не отображается, щелкните Установка других средств и компонентов.
В установщике Visual Studio выберите рабочую нагрузку разработки классических приложений .NET.
В Visual Studio Installer выберите Изменить. Вам может быть предложено сохранить результаты работы. Нажмите кнопку «Продолжить», чтобы установить рабочую нагрузку. Вернитесь к шагу 2 в процедуре Создание проекта.


Visual Studio открывает новый проект, включающий код по умолчанию «Hello World». Чтобы просмотреть его в редакторе, выберите файл кода Program.cs в окне Обозревателя решений, которое обычно находится в правой части Visual Studio.
Один оператор кода вызывает метод WriteLine для отображения литеральной строки «Hello, World!» в окне консоли. Если нажать клавишу F5, программа по умолчанию запустится в режиме отладки. После запуска приложения в отладчике окно консоли остается открытым. Для закрытия окна консоли нажмите любую клавишу.
Начиная с .NET 6, новые проекты, использующие шаблон консоли, создают не такой код, как в предыдущих версиях. Дополнительные сведения см. на странице Новые шаблоны C# для создания инструкций верхнего уровня.
Создание приложения
В этом разделе описаны следующие задачи:
- Ознакомление с некоторыми базовыми расчетами для целых чисел в C#.
- Добавление кода для создания простого приложения калькулятора.
- Отладка приложения для поиска и исправления ошибок.
- Оптимизация кода для повышения эффективности.
Вычисления с целыми числами
Давайте начнем с базовых расчетов для целых чисел в C#.

- В редакторе кода удалите созданный по умолчанию код Hello, World!. В частности, удалите строку с текстом: Console.WriteLine(«Hello World!»); .
- На его месте введите следующий код:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Обратите внимание, что при вводе кода функция IntelliSense в Visual Studio предлагает возможность автозавершения записи.
Откроется окно консоли с суммой 42 + 119, которая равна 161. 

- В разделе Обозреватель решений в области справа выберите Program.cs, чтобы отобразить файл в редакторе кода.
- В редакторе кода замените код по умолчанию Hello World ( Console.WriteLine(«Hello World!»); ). Замените строку следующим кодом:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();
Если ввести код, функция IntelliSense Visual Studio предлагает возможность автозавершения записи.
Откроется окно консоли с суммой 42 + 119, которая равна 161. 
Добавление кода для создания калькулятора
Давайте продолжим, добавив более сложный набор кода калькулятора в проект.
- В редакторе кода замените весь код в 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)); break; case "s": Console.WriteLine($"Your result: - = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: * = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: / = " + (num1 / num2)); break; > // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app. "); Console.ReadKey(); > > >

- В редакторе кода замените весь код в 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)); break; case "s": Console.WriteLine($"Your result: - = " + (num1 - num2)); break; case "m": Console.WriteLine($"Your result: * = " + (num1 * num2)); break; case "d": Console.WriteLine($"Your result: / = " + (num1 / num2)); break; > // Wait for the user to respond before closing. Console.Write("Press any key to close the Calculator console app. "); Console.ReadKey();

Добавление возможностей десятичного числа
Далее мы будем изменять этот код, добавляя функциональные возможности.
Пока наше приложение принимает и возвращает только целые числа. Например, при запуске программы и делении числа 42 на число 119 вы получите результат 0, что для нас недостаточно точно.

Чтобы исправить код для повышения точности при обработке десятичных чисел, выполните указанные ниже действия.
- В Program.cs в редакторе Visual Studio нажмите клавиши CTRL+ H, чтобы открыть элемент управления «Найти и заменить».
- Введите int в элементе управления, а затем введите float в поле Заменить.
- Выберите значки Учитывать регистр и Слово целиком в элементе управления или нажмите сочетание клавиш ALT+C и ALT+W.
- Щелкните значок Заменить все или нажмите сочетание клавиш ALT+A, чтобы выполнить поиск и замену.
- Еще раз запустите приложение калькулятора и разделите число 42 на число 119. Теперь приложение возвращает не просто ноль, а десятичное число.
Теперь приложение может возвращать результаты в виде десятичного числа. Давайте изменим код так, чтобы приложение могло выполнять операции над десятичными числами. - Используйте элемент управления Найти и заменить, чтобы изменить каждый экземпляр переменной float на double и каждый экземпляр метода Convert.ToInt32 на Convert.ToDouble .
- Запустите приложение калькулятора и разделите число 42,5 на число 119,75. Теперь приложение принимает десятичные значения и возвращает более длинное десятичное число в качестве результата.
В разделе Revise the code (Пересмотр кода) можно уменьшить количество десятичных разрядов в результатах.
Отладка приложения
Вы улучшили базовое приложение калькулятора, но приложение еще не обрабатывает исключения, такие как ошибки ввода пользователей. Например, если пользователи пытаются разделить на ноль или ввести неожиданный символ, приложение может перестать работать, возвращать ошибку или возвращать непредвиденный нечисловой результат.
Давайте рассмотрим несколько типичных ошибок во входных данных, найдем их с помощью отладчика, если они там есть, и исправим код, чтобы устранить их.
Дополнительные сведения об отладчике и принципах его работы см. на странице Знакомство с отладчиком 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.ToInt32(Console.ReadLine()); >Console.WriteLine($"Your result: / = " + (num1 / num2)); break; >
Когда вы добавите новый код, раздел с оператором switch будет выглядеть так, как показано на следующем снимке экрана:

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

Исправление ошибки формата
Если ввести буквенный символ, когда для приложения необходим цифровой символ, приложение остановит работу. Visual Studio отображает причину проблемы в редакторе кода.


Чтобы решить эту проблему, можно выполнить рефакторинг ранее введенного кода.
Пересмотр кода
Чтобы не делегировать всю обработку кода классу program , можно разделить приложение на два класса: Calculator и Program .
Класс Calculator выполняет основную часть работы для вычислений, а класс Program отвечает за пользовательский интерфейс и обработку ошибок.
-
В 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; > >
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 an integer 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 an integer 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: \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; > >


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

- Закройте приложение «Калькулятор», если оно еще открыто.
- Закройте область вывода в Visual Studio.
- В Visual Studio нажмите клавиши CTRL+S, чтобы сохранить приложение.
Добавление системы управления исходным кодом Git
Теперь, когда вы создали приложение, вы можете добавить его в репозиторий Git. Visual Studio упрощает этот процесс с помощью инструментов Git, которые вы можете использовать непосредственно из IDE.
Git — это наиболее широко используемая современная система контроля версий, поэтому, независимо от того, являетесь ли вы профессиональным разработчиком или учитесь программировать, Git может быть для вас весьма полезным. Если вы новичок в Git, вы можете начать с сайта https://git-scm.com/. Там вы найдете памятки, популярную электронную книгу и видеоматериалы по основам GIT.
Чтобы связать свой код с Git, начните с создания нового репозитория Git, в котором находится ваш код:
- В строке состояния в правом нижнем углу Visual Studio нажмите Добавить в систему управления версиями и выберите Git.

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

Чтобы узнать больше о том, как использовать 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 an integer 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 an integer 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: \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; > >
Следующие шаги
Перейдите ко второй части этого руководства: