Под перегрузкой операции понимается существование нескольких реализаций одной и той же операции. Большинство операций языка 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; //ошибка: результатПредыдущая страница Следующая страница