1. Константи
Константа — це «магічна» змінна, значення якої не можна (і не треба!) змінювати після оголошення. Уявіть наліпку на вашому горнятку з написом «Тільки чай». Приклеївши таку наліпку, ви вже не зможете замінити чай на каву (принаймні в межах C#).
const int DaysInWeek = 7;
const string HelloMessage = "Ласкаво просимо!";
У цих прикладах DaysInWeek завжди буде 7, а HelloMessage — завжди буде привітальним. Як тільки значення константи визначено, змінити його вже не можна.
Навіщо потрібні константи?
- Ясність коду: коли ви бачите const double Pi = 3.14159;, немає сумнівів, що це константа, а не змінна, яку хтось може змінити під час виконання програми.
- Безпека: ніхто (навіть ви самі за кілька місяців) не зможе випадково змінити значення константи.
- Продуктивність: компілятор C# підставляє значення константи безпосередньо в місця використання, тому програма працює трохи швидше.
Синтаксис оголошення
const тип ім'я = значення;
- Тип — будь-який примітивний тип (int, double, string, char, а також перелічення і літерали).
- Імʼя — прийнято використовувати стиль CamelCase або PascalCase. Для «магічних» констант іноді використовують усі великі літери й підкреслення (DAYS_IN_WEEK), але в C# це не обов’язково.
Приклади:
const double GRAVITY = 9.81; // прискорення вільного падіння, м/с²
const char DELIMITER = ',';
const string DEVELOPER_NAME = "Іван Петренко";
Особливості та обмеження констант
- Значення має бути відоме під час компіляції. Це означає, що не можна оголосити константу, значення якої обчислюється під час виконання програми.
const int NowYear = DateTime.Now.Year; // ПОМИЛКА КОМПІЛЯЦІЇ!
- Можна використовувати лише прості типи, string або перелічення.
- Не можна зробити константою масив, об’єкт, результат виклику методу тощо.
- Навіть вирази, які математично здаються «простими», мають бути обчислені компілятором, а не під час роботи програми.
Ось приклад — так не можна:
const string FullGreeting = "Привіт, " + userName; // userName — це змінна, так не можна!
А так — можна й треба:
const string DefaultGreeting = "Привіт, користувач!";
Де зазвичай оголошують константи?
- На початку класу (або файлу), над методами.
- У спеціальних класах з константами (наприклад, public static class Constants).
- На рівні класу, якщо константа стосується тільки цього класу.
Приклад для нашого консольного застосунку:
class Program
{
const string Welcome = "Ласкаво просимо до нашого застосунку!";
static void Main(string[] args)
{
Console.WriteLine(Welcome);
}
}
Константи та область видимості
Константи підкоряються тим самим правилам області видимості, що й звичайні змінні: їх видно лише в межах тієї області, де їх оголошено.
2. Ключове слово var
Ключове слово var — це не новий тип змінної, а зручний спосіб дозволити компілятору самостійно визначити тип змінної за контекстом.
Це лише «синтаксичний цукор» — жодної магії, і після компіляції змінна має звичайний тип.
var age = 23; // компілятор розуміє: age — це int
var name = "Анна"; // компілятор розуміє: string
var price = 99.99; // компілятор розуміє: double
Чому з’явився var?
- Читабельність: не треба писати довгі типи (на кшталт Dictionary<string, List<int>>) вручну.
- Гнучкість: дозволяє легше змінювати типи в майбутньому: зміните праву частину — ліворуч var уже підлаштується.
- Сучасний стиль: майже всі сучасні C#‑проєкти використовують var там, де тип легко читається з ініціалізації.
Коли можна (і треба) використовувати var
- Коли з правої частини однозначно видно тип змінної.
- Коли тип очевидний (var price = 100; — ясно, що це int).
- Коли тип занадто довгий або складний (наприклад, результат LINQ-запиту).
var numbers = new int[] { 1, 2, 3, 4 };
var input = Console.ReadLine(); // input — це string (метод повертає string)
Коли краще НЕ використовувати var
Якщо тип неочевидний з правої частини, код може стати менш зрозумілим. І якщо за місяць ви навіть за допомогою колег не зрозумієте, який там тип, краще вказати його явно.
var mystery = DoSomethingVeryComplicated(); // Який це тип, mystery?
Тут краще явно вказати тип:
string result = DoSomethingVeryComplicated();
Золоте правило: використовуйте var тільки там, де це не погіршує читабельність коду!
var — лише для локальних змінних
Ключове слово var працює лише для локальних змінних — всередині методів. Не можна використовувати var для:
- параметрів методу;
- властивостей класу;
- констант.
Як працює var «під капотом»
- Компілятор C# під час компіляції підставляє правильний тип.
- Після компіляції жодного var не залишається.
- Немає жодної втрати продуктивності: це зручність лише для програміста.
var year = 2025; // на етапі компіляції стає: int year = 2025;
Типові помилки при використанні var
- Неініціалізована змінна:
var a; // ПОМИЛКА: Компілятору немає з чого вивести тип!
- Неоднозначна ініціалізація:
var list = null; // ПОМИЛКА: Тип для null не визначено!
- Повторне використання змінної з різними типами:
var value = 5; // value — int
value = "Пʼять"; // ПОМИЛКА: value вже int!
Порівняння: явні типи та var
| Сценарій | Явний тип | var |
|---|---|---|
| Тип однозначний | |
|
| Метод повертає складний тип | |
|
| Масив | |
|
У більшості випадків у сучасних проєктах використовується var для локальних змінних. Для параметрів, властивостей, констант — лише явні типи.
3. Пастки та поради
У C# нерідко пишуть «магічні» числа прямо в коді («7», «3.14159», «0.15» та інші загадкові цифри). Це погано: якщо раптом значення зміниться, доведеться шукати всі згадки в усьому проєкті. Використовуйте константи! І вам буде простіше, і колеги подякують…
Із var інша крайність: якщо у вас увесь код — суцільний var, але ніде не видно, які типи використовуються, код швидко стає незрозумілим. Тому використовуйте var там, де це логічно й очевидно з контексту, а в інших випадках не соромтеся явно вказувати тип.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ