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; // ускорение свободного падения, м/с^2
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 там, где это логично и понятно из контекста, а в остальных случаях не стесняйтесь явно указывать тип.

2
Задача
C# SELF, 10 уровень, 1 лекция
Недоступна
Объявление и использование констант
Объявление и использование констант
2
Задача
C# SELF, 10 уровень, 1 лекция
Недоступна
Работа с ключевым словом var
Работа с ключевым словом var
Комментарии (4)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Mark Marchenko Уровень 27
6 января 2026
В Разделе "1. Константы", параграфе "Синтаксис объявления" сказано

"Тип - любой примитивный тип... а также перечисления и литералы"
Бред какой-то, как литерал может быть типом?
Александр Уровень 22
19 октября 2025
var вредная штука, не стоит её лепить везде. она хороша в LINQ, но когда её вставляют повсюду - это плохо. Лучше не лениться и явно указывать тип
Aleksei Perchukov Уровень 66
30 июля 2025
Исправьте ошибку валидатора в задаче "Работа с ключевым словом var" - видимо в нём забито "153.93804", а по факту должно получиться "153,93791"
Николай Уровень 9
21 августа 2025
хз, все получилось с первого раза.