ВУЗ:
Составители:
Рубрика:
47
ция (?:) имеют правую ассоциативность. Все другие двоичные опера-
ции имеют левую ассоциативность.
Можно заключать выражения в скобки для принудительного вы-
числения некоторых частей выражения раньше других. Например, вы-
ражение 2 + 3 * 2 в обычном случае будет иметь значение 8, по-
скольку операции умножения выполняются раньше операций сложения.
А результатом вычисления выражения (2 + 3) * 2 будет число 10,
поскольку компилятор C# получит данные о том, что операцию сложе-
ния (+) нужно вычислить до выполнения операции умножения (*).
Порядок выполнения операций с объектами пользовательских
классов и структур можно изменить. Такой процесс называется пере-
грузкой операций (рассмотрено в разделе 4.8).
Следует отметить, что в языке C# нет операции возведения в сте-
пень. Для возведения в степень используется статический метод Pow()
класса System.Math.
3.3.1. Перегрузка операций
Под перегрузкой операции понимается существование несколь-
ких реализаций одной и той же операции. Большинство операций языка
C# являются перегруженными, т.е. одна и та же операция может приме-
няться к операндам различных типов. Поэтому перед выполнением опе-
рации компилятор ведет поиск описания операции, подходящего для
используемых типов операндов. Следует отметить, что операции, как
правило, выполняются над операндами одного типа. Если же операнды
разных типов, то предварительно происходит неявное преобразование
типа операнда.
Оба операнда могут быть одного типа, но преобразование типов
может все равно происходить – по той причине, что для заданных типов
нет соответствующей перегруженной операции. Такая ситуация доста-
точно часто возникает на практике, поскольку, например, операция
сложения не определена для младших подтипов арифметического типа.
Например, если объявлены переменные
byte b1 =1, b2 =2, b3;
short sh1;
int in1;
То при записи простого оператора будет выдаваться ошибка компиля-
ции:
b3 = b1 + b2; //ошибка: результат типа int
Оба операнда имеют тип byte, но для данного типа нет перегруженной
реализации сложения. Ближайшей операцией является сложение целых
типа int. Поэтому оба операнда преобразуются к типу int, выполняет-
Страницы
- « первая
- ‹ предыдущая
- …
- 45
- 46
- 47
- 48
- 49
- …
- следующая ›
- последняя »