Упражнение. Выполнение добавления с неявным преобразованием данных
Часто требуется выполнять математические операции с числовыми данными. Вы начнете с добавления в этом уроке и развернитесь к другим операциям в следующем уроке, так как есть важный урок, чтобы узнать, как компилятор C# анализирует и интерпретирует код.
Добавьте два числовых значения
Чтобы сложить два числа, вы будете использовать оператор сложения, который является символом +плюса. Обратите внимание, что для сложения используется тот же символ плюса +, что и для объединения строк. Применение одного символа для выполнения нескольких разных операций называется "перегрузкой оператора" и достаточно распространено в языке C#.
В этом случае компилятор C# самостоятельно определяет, какую именно операцию вы хотите выполнить. Компилятор анализирует код и устанавливает, что + (оператор) стоит между двумя числовыми значениями (операндами). Учитывая типы данных переменных (обе имеют тип int), он понимает, что необходимо сложить эти два значения.
Редактор кода C# доступен непосредственно в браузере: редактор кода C#. Этот редактор предоставляет упрощенную среду для написания, запуска и тестирования кода C# без необходимости устанавливать программное обеспечение на локальном компьютере.
Откройте редактор кода C# в новом окне браузера или вкладке.
Вы можете разместить окна браузера параллельно, чтобы вы могли ссылаться на эти инструкции во время работы в редакторе кода C#.
Введите следующий код в редактор кода C#:
int firstNumber = 12; int secondNumber = 7; Console.WriteLine(firstNumber + secondNumber);Запустите код, и вы увидите следующий результат в выходной консоли:
19
Смешивание типов данных для принудительного выполнения неявного преобразования типов
Что произойдет, если вы пытаетесь использовать + символ с обоими string и int значениями?
Удалите весь код, который вы написали ранее.
Введите следующий код в редактор кода C#:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + " widgets.");Запустите код, и вы увидите следующий результат в выходной консоли:
Bob sold 7 widgets.
В этом случае компилятор C# понимает, что вы хотите использовать + символ для объединения двух операндов. Это вывод обусловлен тем, что символ + окружён операндами типов данных string и int. Соответственно, компилятор пытается на временной основе неявно преобразовать переменную int типа widgetsSold в тип string, чтобы обеспечить возможность ее объединения с остальной частью строки. Компилятор C# старается помочь вам, когда может, но в идеале вам следует четко выражать свои намерения.
Попробуйте более сложный случай сложения чисел и конкатенации строк
Измените написанный код, чтобы он соответствовал следующему коду:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + widgetsSold + 7 + " widgets.");Запустите код, и вы увидите следующий результат в выходной консоли:
Bob sold 77 widgets.
Вместо сложения переменной int типа widgetsSold с литералом int типа 7 компилятор обрабатывает оба значения как строковые и объединяет их.
Добавьте скобки для уточнения намерения компилятора
Измените написанный код, чтобы он соответствовал следующему коду:
string firstName = "Bob"; int widgetsSold = 7; Console.WriteLine(firstName + " sold " + (widgetsSold + 7) + " widgets.");Запустите код, и вы увидите следующий результат в выходной консоли:
Bob sold 14 widgets.
Символ круглой скобки () становится другим перегруженным оператором. В этом случае открывающая и закрывающая круглые скобки используются в качестве оператора, определяющего порядок выполнения операций, по аналогии с математической формулой. Вы указываете, что необходимо сначала разрешить внутренние круглые скобки, что приводит к сложению значений int, widgetsSold и 7. После разрешения этого вопроса выполняется неявное преобразование результата в строку, чтобы его можно было объединить с остальной частью сообщения.
Примечание.
Как правило, не следует выполнять операции вычисления и объединения в одной строке кода. Этот пример позволяет понять, каким образом компилятор интерпретирует операторы и операнды.
Кратко
Вот что вы узнали до сих пор о математических операциях в C#:
- Вы можете выполнять математические операции с числами, например складывать их.
- Для выполнения операций объединения и сложения используется символ плюса
+. Такой способ называется перегрузкой оператора и подразумевает определение выполняемой операции самим компилятором на основании типов обрабатываемых данных. - Если очевидно, что разработчик пытается объединить строковые представления чисел для отображения, компилятор C# неявно преобразует значение типа
intвstring. - Используйте скобки, чтобы определить порядок операций, чтобы явно сообщить компилятору, что необходимо выполнить определенные операции перед другими операциями.