Урок 3. Операции присвоения с…

Оператор присвоения (=) сохраняет значение своего правого операнда в месте хранения (переменной) обозначенной в левом операнде. Операнды должны быть одного типа (или правый операнд должен допускать явное преобразование в тип левого операнда).

Но в C# операцию присвоения также можно произвести выполнив дополнительную арифметическую операцию со значением в переменной. Например, что бы не писать следующего операции:

int variable2 = 0;
variable2 = variable2 + 5;
variable2 = variable2 - 5;

variable2 = variable2 * 5;
variable2 = variable2 / 5;
variable2 = variable2 % 5;
их можно написать следующим образом:
int variable2 = 0;
variable2 += 5;    // Используется присвоение со сложением.
variable2 -= 5;    // Используется присвоение с вычитанием.
variable2 *= 5;    // Используется присвоение с умножением.
variable2 /= 5;    // Используется присвоение с делением.
variable2 %= 5;    // Используется присвоение остатка от деления.

Следует подметить, что «операция присвоения с…» подразумевает, что программисту в выражении справа нет нужды писать имя переменной в которою произойдёт запись результата выражения.
Также выше были наведены простые примеры использования «операций присвоения с…», но они также могут быть более сложными Например, следующее выражение:

variable2 += 5 + 20/5;
будет эквивалентно: 
variable2 = variable2 + 5 + 20/5;
Зачастую полную запись выражения называют громоздким решением, а решение использующее «операций присвоения с…» называют элегантным решением.

Кроме этого нужно вспомнить о следующем правиле работы с арифметическими операциями: «Все арифметические операции производимые над двумя значениями типа (byte, sbyte, short, ushort) в качестве результата, возвращают значение типа int.» С этого следует, что результат арифметических операций с данными типами нужно преобразовывать:

byte variable1 = 0;
    
//variable1 = variable1 + 5;       // ОШИБКА: Попытка неявного преобразования значения результата, тип int в тип byte.
//variable1 = (byte)variable1 + 5; // ОШИБКА: Происходит преобразование типа byte в тип byte,  раньше выполнения операции сложения.
    
variable1 = (byte)(variable1 + 5); // Громоздкое решение.
    
variable1 += 5;                    // Элегантное решение.           

//variable1 += 5000;               // Ошибка.  т.к. значение правой части выражения не должно превышать диапазон допустимых значений типа переменной

Как видно из кода выше «операций присвоения с…» для типов byte, sbyte, short и ushort также выполняют преобразование результата арифметических операций.

Также было указано ещё одно правило: при использовании «операций присвоения с…» результат правой части выражения не должно превышать диапазон допустимых значений типа переменной.

Источник: видеоурок Александра Шевчука "ВИДЕОУРОК №3. ПЕРЕМЕННЫЕ И ТИПЫ ДАННЫХ"

%D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BB%D0%B5%D0%B2%D0%BE%202 предыдущая статья | следующая статья %D1%81%D1%82%D1%80%D0%B5%D0%BB%D0%BA%D0%B0%20%D0%B2%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%202