Содержание
Для того, чтобы мы могли хранить в приложении какие-либо данные, используются переменные. Что такое переменная в программировании? Как определяются переменные в C#? На эти и другие вопросы мы сегодня и будем искать ответы.
При работе над какой-либо программой мы так или иначе задействуем в работе переменные различного типа. В этой части мы рассмотрим какие переменные бывают в C# и попробуем написать ещё одно приложение, демонстрирующее полученные нами знания в C#.
Что такое «переменная» в программировании?
В общем случае, вне зависимости от языка программирования, обычно дается следующее определение переменной: переменная — это именованная область памяти в которой хранятся данные приложения. Если и другое определение: переменная — это идентификатор абстрактного или физического участка машинной памяти.
Исходя из этих определений, можно выделить два признака, которые присущи переменной в программировании:
- Имя переменной — это может быть строка символов или один символ. В зависимости от языка программирования, к названию переменных могут предъявляться различные требования.
- Значение переменной. Переменная определяется в приложении, чтобы что-то в этой переменной хранить (строки, числа, сложные объекты и т.д.). Значение переменной может быть присвоено сразу при её объявлении или позднее.
Возможно, что вы только начинаете изучать программирование и C# — это ваш первый язык программирования. В этом случае, определение переменной как «идентификатор абстрактного или физического участка машинной памяти» для вас может выглядеть как набор слов без смысла. В этом случае, при объяснении того, что из себя представляет переменная, часто прибегают к такому абстрактному примеру с коробкой:
Сама коробка — это переменная (область памяти). На коробке написано «A» — имя переменной. Можно было написать и другое имя, например, «кубик» или даже «параллелепипед» — сути переменной это никак не изменяет — это будет всё та же коробка. В коробку мы можем помещать различные предметы — кубики, книги, шарики и так далее. Все эти предметы — это данные, которые мы можем хранить в переменной. Этот пример демонстрирует переменную в так называемых «бестиповых языках», когда нам не важно какие данные хранит переменная (наша коробка) будут ли это кубики или книги — они прекрасно поместятся в нашей коробке.
Однако, в C# для переменной используется третий признак — тип переменной. Возвращаясь к примеру с коробкой, тип переменной можно представить так: тип переменной — это размеры самой коробки. В самом простом случае, используя тип переменной мы говорим «В эту коробку следует помещать только один кубик заданного размера«. То есть мы ограничиваем пользователя коробки конкретным типом данных — один кубик заданного размера и никак иначе. Это наша коробка и мы устанавливаем правила её использования. Если пользователь попытается нарушить наше ограничение и затолкать в коробку (переменную), например, кубик большего размера (значение другого типа данных), то это будет нарушением наших правил и может вызвать проблемы, например, коробка может порваться. Возвращаясь к программированию, можно сказать, что в самом общем случае, в Visual Studio вы не сможете присвоить переменной значение другого типа данных, например, вы не можете переменной для хранение чисел присвоить значение в виде строки.
Описание переменной в C#
В самом общем случае, переменная в C# определяется следующим образом:
тип имя;
Например,
string name;
то есть вначале идёт тип переменной, а затем — её имя. Так как определение переменной — это инструкция, то мы ставим в конце строки точку с запятой. Правила именования переменных в C# следующие:
- имя должно начинаться либо с буквы, либо с символа подчеркивания («_»)
- имя не должно быть ключевым словом C#
- имя не должно содержать символов пунктуации и пробелов.
name
, num
, i
, Context, _sum
, version1ForMe
1version
(начинается с цифры), class (является ключевым словом), data:name
(содержит символ пунктуации)При этом следует учитывать, что язык C# регистрозависимый, то есть переменные:
string param; string Param;
это две разные переменные.
И, хотя переменной можно давать любое имя, всё же имена должны отражать суть того для чего эта переменная предназначена. Например, вот такой код можно считать плохо оформленным:
string S;
Во-первых, имя переменной не отражает сути — что будет хранить эта переменная мы сможем узнать только просмотрев код приложения ниже объявления переменной. Во-вторых, в C# хорошим тоном считается писать имя переменной с маленькой буквы. Правильнее было бы назвать переменную, например, так:
string name;
Так мы сразу можем понять, что переменная будет хранить какое-то имя, а тип переменной — string
говорит нам о том, что значением переменной будет строка. И здесь мы подходим к следующей части статьи о переменных в C# — присвоение значений и инициализация переменных в C#.
Присвоение значений и инициализация переменных в C#
Присвоение значений переменным
Для присвоения значения переменной мы используем следующую конструкцию языка C#:
имя_переменной = значение;
Математический символ =
используется для присвоения значения переменной. Например, присвоим значение нашей переменной name
:
string name; //объявили переменную name = "Вася"; //присвоили значение переменной
После того, как мы объявили переменную (определили тип и название) и присвоили ей значение мы можем каким-либо образом с этой переменной работать, например, вывести значение переменной на экран:
Console.WriteLine(name);
При этом, мы можем в любой момент времени изменить значение переменной, например, так:
string name; name = "Вася"; //присвоили значение Console.WriteLine(name); name = "Иван"; //изменили значение
В C# переменным можно присваивать только те значения, которые соответствуют её типу. То есть, следующий код ошибочный и вы даже не сможете запустить такое приложение:
string name; name = "Вася"; name = 55; //тип переменной - строка (string) мы не можем присвоить этой переменной число
В Visual Studio Вы сразу увидите ошибку — неверное значение переменной будет подчеркнуто красной волнистой линией:
Инициализация переменной в C#
Совсем не обязательно выделять под объявление и присвоение значения переменной две инструкции. В C# мы можем сразу при объявлении присвоить переменной значение — то есть инициализировать переменную, например, вот так:
string name = "Вася"; //инициализация переменной
Здесь мы объявили переменную и сразу присвоили этой переменной значение.
Константы
В C# также помимо переменных выделяются константы. Константы в C# — это какие-либо постоянные значения, которые известны во время компиляции и не изменяются во время выполнения программы. Чтобы объявить константу в C# используется ключевое слово const
, а сама конструкция объявления и инициализации константы выглядит следующим образом:
const [тип_константы] [имя_константы] = [значение_константы];
например, мы можем объявить в своей программе следующую константу:
const string GREETINGS = "Привет";
Константа обязательно должна быть инициализирована в момент объявления, а её значение, в отличие от переменной, не меняется. Например, следующий код не скомпилируется:
const string GREETINGS; //не присвоено значение константе
и такой тоже приведет к ошибке:
const string GREETINGS = "Привет"; GREETINGS = "Hello"; //нельзя менять значение константы
При этом, мы можем использовать значения констант в каких-либо вычислениях и операциях, например, так:
const string GREETINGS = "Привет"; string name = "Вася"; Console.WriteLine($"{GREETINGS}, {name}");
На экране мы увидим:
Пустые переменные
Начиная с версии 7.0 язык C# поддерживает пустые переменные. Это временные фиктивные переменные, которые намеренно не используются в коде приложения. Пустые переменные эквивалентны переменным, которым не присвоены значения. Так как пустая переменная по сути всего одна и этой переменной может даже не выделяться память, пустые переменные помогают расходовать память более экономно, делают код яснее, повышают его читаемость и упрощают поддержку.
В C# пустая переменная определяется символом нижнего подчеркивания «_
«. Небольшой код в котором используется пустая переменная:
string name = "Вася"; Console.WriteLine(name); _ = Console.ReadLine();
По сути, последняя строка — всего лишь «заглушка» позволяющая держать окно консоли открытым пока пользователь не нажмет кнопку Enter, однако сам по себе метод ReadLine()
возвращает строку (string?
) введенную пользователем. И так как нам эта строка абсолютно не требуется мы передаем её в пустую переменную.
Итого
Сегодня мы разобрались с тем, что из себя представляют переменные, как объявляются и инициализируются переменные в C#, а также затронули такие интересные моменты языка C# как объявление пустых переменных.