Шаг 21.
Язык программирования C#. Начала
Базовые типы и операторы. Объявление переменных
На этом шаге мы рассмотрим особенности объявления переменных.
Мы уже знаем (в общих чертах), что такое переменная и как она определяется. Здесь сделаем некоторое обобщение. Итак, напомним, что переменная предназначена для хранения в памяти некоторого
значения. Переменная предоставляет пользователю доступ к области памяти, где хранится значение. С помощью переменной это значение можно прочитать и, в случае необходимости, изменить.
Значение переменной присваивается в формате переменная=значение, то есть используется оператор присваивания =, слева от которого указывается переменная, которой присваивается
значение, а справа - значение, присваиваемое переменной.
Перед использованием переменная должна быть объявлена. Сделать это можно практически в любом месте программного кода, но обязательно до того, как переменная начинает использоваться.
Объявляется переменная просто: указывается ее тип и название. При этом можно:
- Объявлять сразу несколько переменных, если они относятся к одному типу. В таком случае после идентификатора типа названия переменных указываются через занятую. Например, инструкцией
int А, В, С объявляются три переменные (А, В и С), каждая типа int.
- При объявлении переменной можно сразу присвоить значение (инициализировать переменную). Так, командой short х=12 объявляется переменная х типа short,
и этой переменной присваивается значение 12. Командой int А=5, В, С=10 объявляются переменные А, В и С типа int, переменной А присваивается значение 5, а переменной С присваивается значение 10.
- Разрешается выполнять динамическую инициализацию переменной: это когда переменная инициализируется на основе выражения, в которое входят другие переменные. Главное условие для динамической
инициализации состоит в том, что переменные, входящие в выражение, на момент вычисления выражения должны иметь значения. Проще говоря, для динамической инициализации можно использовать
только те переменные, которым уже присвоены значения. Например, сначала с помощью команды int х=10, у=20 мы можем объявить переменные х и у со значениями 10 и 20 соответственно,
а затем командой int z=x+y объявляем и динамически инициализируем переменную z. Значение этой переменной будет равно 30, поскольку на момент вычисления выражения х+у переменные х
и у имеют значения 10 и 20. Важный момент: между переменными z, с одной стороны, и х и у, с другой стороны, функциональная связь не устанавливается. Если после
инициализации переменной z мы изменим значение переменной х или у, то значение переменной z не изменится.
- При объявлении переменной вместо идентификатора типа можно использовать ключевое слово var. С помощью одной var-инструкции может объявляться одна переменная (то есть
нельзя использовать одну var-инструкцию для объявления сразу нескольких переменных). Переменная, объявляемая в var-инструкции, должна сразу инициализироваться, и тип такой
переменной определяется типом литерала (или типом значения выражения), инициализирующим переменную. Например, командой var z = 10 объявляется переменная z. Переменная z
относится к типу int, поскольку значение 10, которое присваивается переменной, представляет собой целочисленный литерал, а целочисленные литералы реализуются как значения типа int.
Но если мы воспользуемся командой var z=10.0, то в таком случае переменная z будет типа double, поскольку литерал 10.0 реализуется как значение типа double. Наконец,
команда var z = 10F определяет переменную z типа float. Причина проста: литерал 10F (из-за суффикса F) реализуется как float-значение, и это определяет
тип переменной z. Ситуация может быть и более сложной. Скажем, командой byte х=1, у=2 объявляется две byte-переменные (х и у со значениями 1 и 2 соответственно).
Если после этого мы объявим переменную z командой var z=x+y, то значением переменной z будет число 3, а сама переменная будет типа int. Почему? Потому что при
вычислении выражения х+у, несмотря на то что оба операнда являются byte-переменными, по правилам автоматического преобразования типов их значения преобразуются в числа типа int,
и результат (число 3) также представлен числом типа int. Поэтому тип переменной z - целочисленный тип int.
- Наряду с переменными могут использоваться и константы. Принципиальное отличие константы от переменной состоит в том, что значение константы изменить нельзя. Как и переменная, константа
объявляется. Но кроме идентификатора типа и имени константы, указывается еще и ключевое слово const. При объявлении константа инициализируется: указанное при инициализации значение константы
впоследствии изменить не получится. Например, командой const int num=123 объявляется константа num типа int, и значение этой константы равно 123. Командой const char first='A', second='В'
объявляются две символьные константы first и second со значениями 'А' и 'В' соответственно.
Существует такое понятие, как область доступности (или область видимости) переменной. Это место в программном коде, где переменная может использоваться. Правило очень простое:
переменная доступна в том блоке, в котором она объявлена. Блок, в свою очередь, определяется парой фигурных скобок. Поэтому если переменная объявлена в главном методе программы, то она доступна
в этом методе (начиная с того места, где переменная объявлена).
Далее мы узнаем, что главным методом область использования переменных не ограничивается. Есть и другие хорошие места в программе, где могут использоваться переменные. Более того, даже в главном
методе могут быть внутренние блоки. Скажем, часть команд в главном методе мы можем заключить в фигурные скобки. Другими словами, блоки кода могут содержать внутренние блоки кода, которые, в свою очередь,
также могут содержать внутренние блоки, и так далее. Переменная, объявленная в некотором блоке (например, в главном методе), доступна и во всех внутренних блоках. Но не наоборот: если переменная объявлена во
внутреннем блоке, то во внешнем она не доступна. Допустим, главный метод программы имеет такую структуру:
static void Main(){
// Переменная объявлена в главном методе:
int А;
// Команды
{
// Начало внутреннего блока
// Переменная объявлена во внутреннем блоке:
int В;
// Команды
} // Завершение внутреннего блока
// Команды
}
Здесь мы имеем дело с переменной А, объявленной в главном методе, и переменной В, объявленной во внутреннем блоке. Причем внутренний блок - это часть команд, заключенных
в фигурные скобки. В этом случае переменная А доступна везде в главном методе, включая внутренний блок. Но вот переменную В можно использовать только во внутреннем блоке.
Вне этого блока переменная "не существует".
Название переменной, объявленной во внутреннем блоке, не может совпадать с названием переменной, объявленной во внешнем блоке. Это означает, что если мы объявили в главном методе переменную А,
то объявить во внутреннем блоке главного метода переменную с таким же именем мы не можем.
На следующем шаге мы рассмотрим арифметические операторы.
Предыдущий шаг
Содержание
Следующий шаг