Перейти к содержанию
Educora
Начальный18 мин2 / 16

Переменные, типы и строки

Храни значения в переменных, познакомься с основными типами и `var`, преобразуй числа и составляй аккуратный текст с помощью интерполяции.

Проверь себя
В этом уроке ты узнаешь
  • Объявлять переменную и присваивать ей значение
  • Правильно выбирать между int, double, decimal, bool, char, string и var
  • Преобразовывать типы: приведение (double) и int.Parse
  • Использовать интерполяцию строк, форматы и методы строк

В игре у игрока есть имя, очки, оставшиеся жизни и уровень. Программа должна где-то хранить эти данные и менять их по ходу игры. Для этого служат переменные. В C# у каждой переменной есть тип, который определяет, какие значения в ней можно хранить.

Переменные

Чтобы объявить переменную, сначала пишут тип, потом имя, а знаком = присваивают значение. Позже переменной можно дать новое значение, но только того же типа. Имена обычно начинаются со строчной буквы, а каждое следующее слово — с заглавной: playerName, livesLeft.

C#
string playerName = "Leyla";
int score = 0;
int livesLeft = 3;
bool isGameOver = false;

score = score + 50;
score += 25;
livesLeft--;

Console.WriteLine(playerName);
Console.WriteLine(score);
Console.WriteLine(livesLeft);
Console.WriteLine(isGameOver);
Ожидаемый результат
Leyla
75
2
False
  • score += 25 — сокращение для score = score + 25; есть также -=, *= и /=.
  • livesLeft-- уменьшает значение на 1, а ++ увеличивает на 1.
  • Значение bool выводится с заглавной буквы — True или False, а в коде пишется строчными: true, false.

Основные типы

ТипЧто хранитПример
intцелые числа (примерно до ±2,1 млрд)int age = 12;
longочень большие целые числаlong views = 3_000_000_000;
doubleдробные числа (измерения, научные расчёты)double height = 1.52;
decimalденьги и точные десятичные расчётыdecimal price = 4.99m;
boolлогическое значение: true или falsebool isOpen = true;
charодин символ, в одинарных кавычкахchar grade = 'A';
stringтекст, в двойных кавычкахstring city = "Baku";

`var` и `const`

Если тип очевиден из правой части, вместо него можно написать var — компилятор сам определит тип. Это не значит, что у переменной нет типа: после var city = "Baku"; переменная city навсегда остаётся string. Для значений, которые никогда не должны меняться, используют const.

C#
var city = "Baku";
var year = 2026;
var price = 2.5m;
const int DaysInWeek = 7;

Console.WriteLine(city.GetType().Name);
Console.WriteLine(year.GetType().Name);
Console.WriteLine(price.GetType().Name);
Console.WriteLine(DaysInWeek * 4);
Ожидаемый результат
String
Int32
Decimal
28

GetType().Name показывает имя типа в .NET: int — на самом деле короткое имя для Int32, а string — для String. Если попробовать написать city = 5;, компилятор выдаст ошибку CS0029: int нельзя преобразовать в string. А DaysInWeek = 8; запрещено вовсе, ведь это константа.

Числа и преобразования

Ты уже знаешь, что 7 / 2 даёт 3. Если нужен дробный результат, преобразуй одно из чисел в double: (double)7 / 2. Такая запись называется приведением типа. В обратную сторону (int)3.99 отбрасывает дробную часть и даёт 3 — без округления! Чтобы превратить текст в число, используют int.Parse, а число в текст — ToString().

C#
using System.Globalization;

CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;

int apples = 7;
int friends = 2;
Console.WriteLine(apples / friends);
Console.WriteLine((double)apples / friends);
Console.WriteLine((int)3.99);
Console.WriteLine(Math.Round(3.99));

int year = int.Parse("2026");
Console.WriteLine(year + 1);
Console.WriteLine(year.ToString() + "!");
Ожидаемый результат
3
3.5
3
4
2027
2026!

Строки и интерполяция

Собирать текст через + быстро надоедает. Интерполяция строк удобнее: перед строкой ставят $, а переменные и выражения пишут прямо в тексте внутри фигурных скобок. После двоеточия в скобках можно указать формат: F2 — две цифры после десятичного разделителя, N0 — целое число с разделителями тысяч.

C#
using System.Globalization;

CultureInfo.CurrentCulture = CultureInfo.InvariantCulture;

string name = "Murad";
int score = 95;
decimal price = 4.5m;
int views = 1234567;

Console.WriteLine("Hi, " + name + "!");
Console.WriteLine($"{name} scored {score} points.");
Console.WriteLine($"Next time: {score + 5}");
Console.WriteLine($"3 tickets: {price * 3:F2} AZN");
Console.WriteLine($"Views: {views:N0}");
Ожидаемый результат
Hi, Murad!
Murad scored 95 points.
Next time: 100
3 tickets: 13.50 AZN
Views: 1,234,567

Строка — тоже объект, и у неё есть полезные свойства и методы. Важно: строки неизменяемы — методы вроде ToUpper() не меняют исходную строку, а возвращают новую. К символам обращаются по индексу, отсчёт начинается с нуля.

C#
string city = "  Baku  ";
string clean = city.Trim();

Console.WriteLine(clean.Length);
Console.WriteLine(clean.ToUpper());
Console.WriteLine(clean.Contains("ak"));
Console.WriteLine(clean.Replace("Baku", "Ganja"));
Console.WriteLine(clean[0]);
Console.WriteLine($"[{city}]");
Ожидаемый результат
4
BAKU
True
Ganja
B
[  Baku  ]
Последняя строка показывает, что Trim() не изменил исходную строку city.

Главное

  • У переменной есть тип, имя и значение: int score = 0;.
  • Для целых чисел — int, для дробей — double, для денег — decimal, для текста — string.
  • var поручает компилятору вывести тип, но потом тип не меняется; const — значение, которое нельзя изменить.
  • (double) и int.Parse преобразуют типы; (int)3.99 не округляет, а даёт 3.
  • Интерполяция с $ — самый удобный способ составлять текст; {x:F2} показывает два знака после запятой.
  • Строки неизменяемы: ToUpper(), Trim() и Replace() возвращают новую строку.

Проверь себя

Вопросов: 10. Каждый правильный ответ приносит XP.

1 / 10
Какой тип лучше всего подходит для денежных сумм?