руковод C# СВОЙСТВА: Полное руководство для начинающих
Привет, будущий супергерой кодирования! Сегодня мы отправимся в увлекательное путешествие в мир свойств C#. Не волнуйтесь, если вы еще ни разу не писали ни строчки кода – я буду вашим доброжелательным проводником, и мы разберем эту тему шаг за шагом. К концу этого учебника вы станете профи в свойствах!
Что такое свойства?
Прежде чем мы углубимся, представьте, что у вас есть копилка. Вы можете класть деньги внутрь и брать их, но вы не можете напрямую получить доступ кнутри копилки. Свойства в C# работают аналогично – они предоставляют способ доступа и изменения значений частных полей в классе, сохраняя при этом контроль над тем, как происходит доступ.
Почему использовать свойства?
- Инкапсуляция: Они помогают скрыть внутренние работы класса.
- Гибкость: Вы можете изменять способ хранения данных, не изменяя способ их доступа.
- Валидация: Вы можете добавлять проверки, чтобы убедиться, что данные являютсяvalid до их установки.
Теперь давайте脏 our руки с кодом!
Базовый синтаксис свойства
Вот самая простая форма свойства:
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
В этом примере Name
是我们的属性。 Он связан с частным полем name
. Части get
и set
называются доступами.
Доступы
Свойства имеют два основных доступа:
- get: Получает значение свойства
- set: Присваивает новое значение свойству
Давайте разберем наше свойство Name
:
public string Name
{
get { return name; } // Это геттер
set { name = value; } // Это сеттер
}
Когда вы получаете доступ к свойству (например, person.Name
), вызывается геттер. Когда вы присваиваете значение (например, person.Name = "John"
), вызывается сеттер.
Автоматически реализованные свойства
C# имеет сокращение для простых свойств, которые не требуют особого логического кода:
public class Person
{
public string Name { get; set; }
}
Это создает свойство Name
с скрытым后备ным полем, которое управляется C# за вас. Это как магия!
Свойства с логикой
Теперь давайте добавим немного пышности нашим свойствам:
public class BankAccount
{
private decimal balance;
public decimal Balance
{
get { return balance; }
set
{
if (value < 0)
{
throw new ArgumentException("Balance cannot be negative");
}
balance = value;
}
}
}
Здесь мы ensured, что баланс никогда не будет отрицательным. Если кто-то попытается установить отрицательный баланс, мы брошим исключение. Это как если бы у вашей копилки был охранник!
Чтение и запись только свойства
Иногда вы можете хотите ограничить доступ к своим свойствам:
public class SecretAgent
{
private string codeName = "007";
// Свойство только для чтения
public string CodeName
{
get { return codeName; }
}
// Свойство только для записи
public string Mission
{
set { Console.WriteLine($"New mission: {value}"); }
}
}
Джеймс Бонд бы одобрил этот уровень тайны!
Выражения тел свойств
Для простых свойств, C# 6.0 ввел более краткий синтаксис:
public class Circle
{
public double Radius { get; set; }
// Свойство только для чтения с использованием тел выражения
public double Area => Math.PI * Radius * Radius;
}
Синтаксис =>
можно понять как " это свойство определено следующим выражением". Это коротко, мило и математически!
Абстрактные свойства
В абстрактных классах вы можете определять абстрактные свойства, которые должны быть реализованы производными классами:
public abstract class Shape
{
public abstract double Area { get; }
}
public class Square : Shape
{
public double Side { get; set; }
public override double Area => Side * Side;
}
Это как создание чертежа для свойств, который ваши "дочерние" классы должны заполнить.
Таблица методов свойств
Вот удобная таблица методов, связанных со свойствами:
Метод | Описание | Пример |
---|---|---|
get | Получает значение свойства | get { return name; } |
set | Устанавливает значение свойства | set { name = value; } |
init | Устанавливает значение свойства только во время инициализации объекта | public string Name { get; init; } |
value | Представляет значение, присваиваемое в сеттере | set { if (value != null) name = value; } |
Заключение
Поздравляю! Вы только что сделали свои первые шаги в мир свойств C#. Помните, свойства как хорошо обученные дворецкие для частных полей вашего класса – они управляют доступом, enforce правила и поддерживают чистоту.
Пока вы продолжаете свое кодирование, вы найдете свойства повсюду. Они являются неотъемлемой частью написания чистого, maintainable кода на C#. Продолжайте практиковаться, и вскоре вы будете работать с свойствами как профи!
Счастливого кодирования, и пусть ваши свойства всегда будут правильно защищены! ?????
Credits: Image by storyset