Основы языка C# 2005. Евсеева О.Н - 60 стр.

UptoLike

Составители: 

64
Приорите
т
Категория Операции Порядок
6 Эквивалентность
== !=
См. выше
7 Логическое И
&
См. выше
8 Логическое
исключающее ИЛИ
(XOR)
^
См. выше
9 Логическое ИЛИ (OR)
|
См. выше
10 Условное И
&&
См. выше
11 Условное ИЛИ
||
См. выше
12 Условное выражение
? :
Справа налево
13 Присваивание
= *= /= %= += -= <<= >>= &= ^= |=
См. выше
4.2. Перегрузка операций
Под перегрузкой операции понимается существование нескольких
реализаций одной и той же операции. Большинство операций языка C#
перегружены, т.е. одна и та же операция может применяться к операндам
различных типов. Поэтому перед выполнением операции идет поиск
реализации, подходящей для данных типов операндов. Заметим, что операции,
как правило, выполняются над операндами одного типа. Если же операнды
разных типов, то предварительно происходит неявное преобразование типа
операнда. Оба операнда могут быть одного типа, но преобразование типов
может все равно происходитьпо той причине, что для заданных типов нет
соответствующей перегруженной операции. Такая ситуация достаточно часто
возникает на практике, поскольку, например, операция сложения не определена
для младших подтипов арифметического типа. Приведем начальный фрагмент
процедуры Express, предназначенной для анализа выражений:
/// <summary>
/// Анализ выражений
/// </summary>
public void Express() {
//перегрузка операций
byte b1 = 1, b2 = 2, b3;
short sh1;
int in1;
//b3 = b1 + b2; //ошибка: результат типа int
b3 = (byte)(b1 + b2);
//sh1 = b1 + b2; //ошибка: результат типа int