Переменные создаются при входе в их область действия (блок) и уничтожаются при выходе. Это означает, что после выхода из блока значение переменной не сохраняется. При повторном входе в этот же блок переменная создается заново.
Можно запретить изменять значение переменной, задав при ее описании ключевое слово const, например:
const int b = 1;
const float x = 0.1, у = 0.1f; // const распространяется на обе переменные
Такие величины называют именованными константами, или просто константами.Они применяются для того, чтобы вместо значений констант можно было использовать в программе их имена. Это делает программу более понятной и облегчает внесение в нее изменений, поскольку изменить значение достаточно только в одном месте программы.
Именованные константы должны обязательно инициализироваться при описании. При инициализации можно использовать не только константу, но и выражение — главное, чтобы оно было вычисляемым на этапе компиляции, например:
const int b = 1, а = 100; const int x = b * а + 25;
Выражение — это правило вычисления значения. В выражении участвуют операнды, объединенные знаками операций. Операндами простейшего выражения могут быть константы, переменные и вызовы функций.
Например, а + 2 — это выражение, в котором + является знаком операции, а и 2 — операндами. Пробелы внутри знака операции, состоящей из нескольких символов, не допускаются. По количеству участвующих в одной операции операндов операции делятся на унарные, бинарные и тернарную. Операции С# приведены в таблице 3.1.
Таблица 3.1 - Операции С#
Категория
Знак операции
Название
Первичные
.
Доступ к элементу
X()
Вызов метода или делегата
X[ ]
Доступ к элементу
X++
Постфиксный инкремент
new
Выделение памяти
X--
Постфиксный декремент
typeof
Получение типа
checked
Проверяемый код
unchecked
Непроверяемый код
Унарные
+
Унарный плюс
-
Унарный минус (арифметическое отрицание)
!
Логическое отрицание
~
Поразрядное отрицание
++X
Префиксный инкремент
--X
Префиксный декремент
(тип)x
Преобразование типа
Мультипликативные
(типа умножения)
*
Умножение
/
Деление
%
Остаток отделения
Аддитивные
(типа сложения)
+
Сложение
-
Вычитание
Сдвига
<<
Сдвиг влево
>>
Сдвиг вправо
Отношения и проверки типа
<
Меньше
>
Больше
<=
Меньше или равно
>=
Больше или равно
is
Проверка на принадлежность типу
as
Приведение типа
Проверка на равенство
= =
Равно
!=
Не равно
Поразрядные логические
&
Поразрядное И (конъюнкция)
^
Поразрядное исключающее ИЛИ
|
Поразрядное ИЛИ (дизъюнкция)
Условные логические
&&
Логическое И
||
Логическое ИЛИ
Тернарная операция
?:
Условная операция
Продолжение таблицы 3.1
Категория
Знак операции
Название
Присваивания
=
Присваивание
*=
Умножение с присваиванием
/=
Деление с присваиванием
%=
Остаток от деления с присваиванием
+=
Сложение с присваиванием
-=
Вычитание с присваиванием
<<=
Сдвиг влево с присваиванием
>>=
Сдвиг вправо с присваиванием
&=
Поразрядное И с присваиванием
^=
Поразрядное исключающее ИЛИ с присваиванием
|=
Поразрядное ИЛИ с присваиванием
Операции в выражении выполняются в определенном порядке в соответствии с приоритетами, как и в математике. В приведенной выше таблице 3.1 операции расположены по убыванию приоритетов.
Результат вычисления выражения характеризуется значением и типом. Например, пусть а и b — переменные целого типа и описаны так:
int а=2, b = 5;
Тогда выражение а + b имеет значение 7 и тип int, а выражение а = b имеет значение, равное помещенному в переменную а (в данному случае — 5), и тип, совпадающий с типом этой переменной.
Если в одном выражении соседствуют несколько операций одинакового приоритета, операции присваивания и условная операция выполняются справа налево, остальные — слева направо. Для изменения порядка выполнения операций используются круглые скобки, уровень их вложенности практически не ограничен.
Например, а + b + с означает (а + b) + с, а = b = с означает а = (b = с). То есть сначала вычисляется выражение b = с, а затем его результат становится правым операндом для операции присваивания переменной а.