Какво е променлива
Променливата е именована „кутия" в паметта, в която съхраняваш стойност. Името ѝ ти дава начин да достъпваш и променяш тази стойност, без да помниш на кой точно адрес в RAM е тя.
Всяка променлива в C# има три неща:
- Тип — какъв вид данни може да съхранява (число, текст, ...).
- Име — как се обръщаме към нея в кода.
- Стойност — какво съдържа в момента.
Деклариране и инициализация
В C# казваш типа преди името. Това се нарича статично типизиран език — типът се проверява от компилатора, преди програмата изобщо да тръгне.
// деклариране (още няма стойност):
int age;
// инициализация (даваме стойност):
age = 17;
// двете заедно — обикновено така се прави:
int year = 2026;
string name = "Мария";
double price = 4.99;
bool isAdult = false;Запомни
Деклариране = казваме „искам променлива от този тип с това име". Инициализация = даваме ѝ първоначална стойност. Присвояване = променяме стойността по-късно с =.
Ключовата дума var
Понякога компилаторът може сам да познае типа по стойността. Тогава пишем var:
var age = 17; // компилаторът разбира, че е int
var name = "Мария"; // string
var price = 4.99; // doubleВнимание
var не значи „без тип". Типът е определен и не може да се сменя. var x = 5; е завинаги int.
Основни типове в C#
| Тип | За какво | Диапазон / пример | Размер |
|---|---|---|---|
| int | Цели числа | −2.1 млрд до 2.1 млрд | 4 байта |
| long | Много големи цели числа | ≈ ±9 квинтилиона | 8 байта |
| double | Дробни числа | 3.14, −0.001, 1.5e10 | 8 байта |
| decimal | Точни дробни (пари!) | 0.1 + 0.2 = 0.3 точно | 16 байта |
| bool | Истина/Лъжа | true или false | 1 байт |
| char | Един символ | 'A', 'я', '7' | 2 байта |
| string | Текст (низ) | "Здравей" | променлив |
Цели срещу дробни числа
При int няма дробна част — 5 / 2 дава 2, не 2.5! Ако искаш точен резултат, поне едно от числата трябва да е double:
int a = 5 / 2; // 2 (целочислено деление)
double b = 5.0 / 2; // 2.5
double c = 5 / 2.0; // 2.5
double d = 5 / 2; // 2.0 ← внимание, делението е било целочислено!char срещу string
char е един символ в единични кавички. string е поредица от символи в двойни кавички.
char letter = 'A';
string word = "Алгоритъм";
// това е грешка — единичните кавички приемат само 1 символ:
// char wrong = 'AB'; // ❌Правила за имената
- Започват с буква или подчертавка
_(не с цифра). - Могат да съдържат букви, цифри и
_; никакви интервали или специални символи. - Различава големи от малки букви —
ageиAgeса различни. - Не може да съвпадат с ключови думи на C# (
if,class,int…). - По конвенция — пиши на camelCase:
firstName,totalCount.
Добри имена = четим код
Вместо int x = 17; пиши int studentAge = 17;. Кодът се чете много по-често, отколкото се пише.
Константи
Понякога имаш стойност, която не трябва да се променя — например броя на дните в седмицата. За това има ключова дума const:
const int DaysInWeek = 7;
const double Pi = 3.14159;
// DaysInWeek = 8; // ❌ компилационна грешкаПреобразуване между типове
Понякога трябва да минеш от един тип в друг — например да представишint като double, или да прочетеш число от потребителя (което идва като string).
Неявно (имплицитно)
Когато новият тип може да побере стария без загуба на информация, C# прави преобразуването автоматично:
int n = 42;
double d = n; // OK — 42.0Изрично (експлицитно)
Когато има риск от загуба (напр. double → int отрязва дробната част), трябва ти да го напишеш с „каст":
double price = 4.99;
int rounded = (int)price; // 4 — дробната част се изхвърляОт текст към число
Console.ReadLine() връща string. За да работиш с него като с число, ползвай int.Parse или double.Parse:
Console.Write("Възраст: ");
string input = Console.ReadLine();
int age = int.Parse(input); // "17" → 17
// или късо:
int age2 = int.Parse(Console.ReadLine());Какво ако потребителят напише „abc"?
int.Parse ще хвърли грешка. По-сигурно е int.TryParse, който връща true/falseдали е успяло — но него ще го разгледаме по-късно.
Стойности по подразбиране
| Тип | Стойност по подразбиране |
|---|---|
| int, long, double | 0 |
| bool | false |
| char | '\0' (нулев символ) |
| string | null (празна препратка) |
Това са стойностите, ако не присвоиш нищо при декларация — но вътре в метод C# изисква да присвоиш стойност, преди да ползваш променливата.
Какво трябва да запомниш
- Променлива = именована кутия с тип и стойност.
- C# е статично типизиран — типът се проверява при компилация.
- Основни типове:
int,double,bool,char,string. 5 / 2 == 2, защото и двете са цели. За реално деление поне едното трябва да еdouble.charе един символ в' ',stringе текст в" ".- За преобразуване с риск от загуба ползвай каст:
(int)3.7.