Присваивание (assignment) – механизм, который позволяет изменять значения объектов. Простыми словами, с помощью присваивания можно задавать или изменять данные, которые хранятся в переменных.
В языке C# оператор присваивания обозначается символом равенства – “=”, и имеет следующий синтаксис:
<тип данных> <имя переменной> = <значение> в случае, когда создается новая переменная, или
<переменная> = <значение>, коли переменной присваивается новое значение.
int x = 24;
x = 56;
Запись int myNumber = 345 компилятор понимает как:
- создать область в памяти для хранения целого числа со знаком, размером 32-бита;
- назначить ей имя myNumber;
- разместить в этой памяти число 345.
Тип данных значения должен совпадать (или поддерживать неявную конвертацию), с типом переменной.
Кроме этого оператор присваивания позволяет инициализировать, одним и тем же значением, несколько переменных одновременно(но такая запись усложняет чтение кода и мало применяется в практическом программировании):
byte a, b, c;
a = b = c = 111;
Оператор имеет правую ассоциативность, поэтому приведенное выражением воспринимается компилятором как: a = (b = (c = 111));
Составные операторы присваивания
Кроме стандартного, в C# доступны составные операторы присваивания, они позволяют упростить запись выражений, где переменная, которой присваивается значение используется как первый операнд.
Присваивание с арифметическими операциями
Используется со всеми числовыми типами данных.
Сложение с присваиванием +=
Бинарный оператор, который присваивает первому операнду значение его суммы со вторым операндом:
d += e;
//альтернативная форма
d = d + e;
Также может использоваться для конкатенации(склеивания) строк(string):
string s1 = "Text";
s1 += " message"; // Text message;
Вычитание с присваиванием -=
Бинарный оператор, который присваивает первому операнду результат вычитания из него значения второго операнда.
f -= g;
//альтернативная форма
f = f - g;
Умножение с присваиванием *=
Бинарный оператор, который присваивает первому операнду результат его умножения на второй операнд:
h *= i;
//альтернативная форма
h = h * i;
Деление с присваиванием /=
Бинарный оператор, который присваивает первому операнду результат его деления на второй операнд:
j /= k;
//альтернативная форма
j = j / k;
Деление по модулю с присваиванием %=
Бинарный оператор, который присваивает первому операнду результат остатка от его деления на второй операнд:
m %= n;
//альтернативная форма
m = m % n;
Присваивание с побитовыми операциями
Используются для целочисленных типов данных.
Логическое умножение с присваиванием &=
Бинарный оператор, который присваивает левому операнду результат конъюнкции двоичных форм левого и правого операндов:
b &= c;
//альтернативная форма
b = b & c;
Логическое сложение с присваиванием |=
Бинарный оператор, который присваивает левому операнду результат дизъюнкции двоичных форм левого и правого операндов:
d |= e;
//альтернативная форма
d = d | e;
Логическое сложение по модулю с присваиванием ^=
Бинарный оператор, который присваивает левому операнду результат операции XOR двоичных форм левого и правого операндов:
f ^= j;
//альтернативная форма
f = f ^ j;
Смещение влево с присваиванием <<=
Бинарный оператор, который присваивает первому операнду результат после смещения влево первого, на количество разрядов заданного вторым операндом:
k <<= v;
//альтернативная форма
k = k << v;
Смещение вправо с присваиванием >>=
Бинарный оператор, который присваивает первому операнду результат после смещения вправо первого, на количество позиций заданного вторым операндом:
r >>= s;
//альтернативная форма
r = r >> s;