JavaRush /Курси /C# SELF /Константи та ключове слово var

Константи та ключове слово var

C# SELF
Рівень 10 , Лекція 1
Відкрита

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 для виведення типу

Чому з’явився 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
Тип однозначний
int age = 42;
var age = 42;
Метод повертає складний тип
Dictionary<int, string> dict = SomeFunc();
var dict = SomeFunc();
Масив
string[] names = ...
var names = ...
Порада:

У більшості випадків у сучасних проєктах використовується var для локальних змінних. Для параметрів, властивостей, констант — лише явні типи.

3. Пастки та поради

У C# нерідко пишуть «магічні» числа прямо в коді («7», «3.14159», «0.15» та інші загадкові цифри). Це погано: якщо раптом значення зміниться, доведеться шукати всі згадки в усьому проєкті. Використовуйте константи! І вам буде простіше, і колеги подякують…

Із var інша крайність: якщо у вас увесь код — суцільний var, але ніде не видно, які типи використовуються, код швидко стає незрозумілим. Тому використовуйте var там, де це логічно й очевидно з контексту, а в інших випадках не соромтеся явно вказувати тип.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ