Підрозділ 2.2
Змінні та константи
Пояснює оголошення змінних і констант, іменування, присвоєння значень та базову роботу з даними в пам'яті.
2.2. Змінні та константи
Що таке змінна
Для зберігання даних у програмі застосовуються змінні. Змінна — це іменована область пам'яті, в якій зберігається значення певного типу. Кожна змінна має три характеристики: тип (що вона може зберігати), ім'я (як до неї звертатися) і значення (що вона зберігає в конкретний момент).
Тип змінної визначає, яку саме інформацію вона здатна зберігати: ціле число, дробове число, символ, рядок, логічне значення. Крім того, тип впливає на те, які операції можна застосовувати до змінної і скільки пам'яті вона займає.
Оголошення змінної
Перед тим як використовувати змінну, її необхідно оголосити. Синтаксис оголошення:
тип ім'я_змінної;Спочатку вказується тип, потім ім'я. Наприклад, оголосимо змінну типу string (рядок) з іменем name:
Тут у першому рядку змінна name лише оголошена — пам'ять виділена, але значення ще не задано. У другому рядку їй присвоюється рядок "Іван Петренко". Оскільки тип змінної string, їй можна присвоювати лише рядкові значення — спроба присвоїти число або логічне значення призведе до помилки компіляції.
Ініціалізація змінної
Також можна відразу при оголошенні присвоїти змінній початкове значення. Цей прийом називається ініціалізацією:
Це найпоширеніший спосіб роботи зі змінними — оголошення та ініціалізація в одному рядку. Варто пам'ятати: якщо спробувати прочитати значення змінної до того, як воно було присвоєне, компілятор видасть помилку «використання неініціалізованої змінної».
Зміна значення
Відмінною рисою змінних є те, що у програмі можна багаторазово змінювати їх значення. Нове значення просто замінює попереднє:
Щоразу, коли виконується присвоєння diagnosis = "...", нове значення записується на місце попереднього. Попереднє значення при цьому безповоротно замінюється.
Правила іменування змінних
Ім'я змінної — це ідентифікатор, і воно підпорядковується правилам мови C#:
- ім'я може містити букви, цифри та символ підкреслення
_; - перший символ імені має бути буквою або символом підкреслення — але не цифрою;
- в імені не повинно бути пробілів та знаків пунктуації;
- ім'я не може збігатися з ключовим словом мови C# (
int,string,class,newта ін.).
Хоча формально ім'я може бути будь-яким, слід давати змінним описові імена, що відображають їх призначення. Змінна systolicPressure розповідає про себе сама; змінна x або temp — ні.
У C# для локальних змінних і параметрів методів прийнятий стиль camelCase: перше слово з малої літери, кожне наступне — з великої:
Неявна типізація: var
C# дозволяє не вказувати тип явно, якщо компілятор може визначити його самостійно за значенням правої частини. Для цього замість типу вказується ключове слово var:
Важливо розуміти: var — це не динамічний тип і не object. Компілятор визначає конкретний тип один раз на основі виразу праворуч і надалі перевіряє всі операції з цією змінною так само суворо, як якщо б тип був вказаний явно. Після того як тип виведено — він фіксований.
Є обмеження: змінну з var не можна спочатку оголосити, а потім ініціалізувати — компілятор не зможе вивести тип:
var x; // помилка — немає значення, тип невідомий
x = 10;Також не можна ініціалізувати var значенням null — з тієї самої причини. Тип null сам по собі не несе інформації про тип.
Константи
Відмінною особливістю змінних є те, що їх значення можна змінювати в процесі виконання програми. Але іноді нам потрібні значення, які не повинні змінюватись ніколи — вони відомі наперед і мають залишатися незмінними протягом усього виконання. Для таких даних у C# передбачені константи.
Константа оголошується з ключовим словом const перед типом і обов'язково ініціалізується при оголошенні:
Якщо спробувати змінити значення константи після її оголошення — компілятор видасть помилку:
const double MaxNormalTemperature = 37.0;
MaxNormalTemperature = 36.6; // помилка компіляції — константі не можна присвоїти нове значенняТакож неможливо оголосити константу без початкового значення:
const string ClinicName; // помилка — константа не ініціалізованаНерідко для констант використовують назви в стилі PascalCase (MaxPulse, ClinicName). Це умовність, а не вимога мови, але вона допомагає одразу відрізнити константи від змінних у коді.
Якщо нам треба зберігати у програмі деякі дані, які можуть змінюватися, — визначаємо їх як змінні. Якщо дані відомі заздалегідь і не повинні змінюватися — оголошуємо їх константами. Це покращує читабельність коду: читач одразу бачить, що перед ним фіксоване значення, яке є частиною бізнес-правил або фізичних обмежень системи.