Значения и ссылки; литералы; вывод типов var; const и readonly
Узнайте, чем типы-значения отличаются от ссылочных типов, как работают литералы и числовые суффиксы, когда использовать var и каковы роли const и readonly.
«Значения и ссылки; литералы; вывод типов var; const и readonly» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.
Зачем нужны типы
Цель: понять разницу между типами значений и ссылочными типами, а также разобраться, как переменные, литералы и константы ведут себя в повседневном коде.
Значения и ссылки
Тип значения: при присваивании копирует данные, например int, bool или структура. Ссылочный тип: копирует ссылку, например класс, массив или строка.
- Значение: более безопасные локальные изменения
- Ссылка: общий идентификатор объекта
Литералы и суффиксы
У литералов есть типы. Для ясности используйте суффиксы: f (число с плавающей точкой), m (десятичное число), L (длинное целое).
- 3.14f → число с плавающей точкой
- 10m → десятичное число (деньги)
- 123L → длинное целое
Вывод типов var (inference)
var позволяет компилятору вывести тип из выражения справа. Используйте его, когда тип очевиден; в противном случае указывайте тип явно.
const и readonly
const — константа времени компиляции; readonly — значение, задаваемое в конструкторе или при объявлении.
- Используйте const для фиксированных значений, например числа Пи
- Используйте readonly для значений, известных во время выполнения
Типы на практике
В одной небольшой программе изучите поведение значений и ссылок, числовые суффиксы, простой вывод типов var (inference), а также const и readonly.
using System;
// Value type (struct) copies by value
public struct PointS
{
public int X;
public int Y;
}
// Reference type (class) copies the reference
public class PointC
{
public int X;
public int Y;
}
// Readonly demo class
public class Config
{
public readonly string Name;
public Config(string name)
{
Name = name; // can set here
}
}
public class Program
{
// Compile-time constant
private const double Pi = 3.14159;
public static void Main(string[] args)
{
// 1) Value vs reference
PointS a = new PointS { X = 1, Y = 2 };
PointS b = a; // copy value
b.X = 99;
Console.WriteLine("Value struct a.X = " + a.X); // 1 (unchanged)
Console.WriteLine("Value struct b.X = " + b.X); // 99
PointC ac = new PointC { X = 1, Y = 2 };
PointC bc = ac; // copy reference
bc.X = 77;
Console.WriteLine("Ref class ac.X = " + ac.X); // 77 (same object)
Console.WriteLine("Ref class bc.X = " + bc.X); // 77
// 2) Literals & suffixes
float f = 3.14f;
decimal price = 10m;
long big = 123L;
Console.WriteLine("f=" + f + " price=" + price + " big=" + big);
// 3) var inference (type is obvious)
var sum = a.X + a.Y; // int
Console.WriteLine("sum=" + sum);
// 4) const vs readonly
Config cfg = new Config("Demo");
Console.WriteLine("Pi=" + Pi + " Name=" + cfg.Name);
}
}
Определение типа значения
Итоги
Итоги: типы значений копируют данные, а ссылочные типы используют общие объекты. Применяйте суффиксы для числовых литералов, используйте var, когда тип очевиден, и правильно выбирайте между const и readonly.
Часто задаваемые вопросы
Урок «Значения и ссылки; литералы; вывод типов var; const и readonly» бесплатный?
Да — полный текст урока «Значения и ссылки; литералы; вывод типов var; const и readonly» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.
Чему я научусь в уроке «Значения и ссылки; литералы; вывод типов var; const и readonly»?
Узнайте, чем типы-значения отличаются от ссылочных типов, как работают литералы и числовые суффиксы, когда использовать var и каковы роли const и readonly. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Значения и ссылки; литералы; вывод типов var; const и readonly»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Значения и ссылки; литералы; вывод типов var; const и readonly
- Операторы и выражения: арифметические, сравнительные, логические
- Суффиксы на практике; приведение и преобразование; создание объектов в C# 6