руковод C# СВОЙСТВА: Полное руководство для начинающих

Привет, будущий супергерой кодирования! Сегодня мы отправимся в увлекательное путешествие в мир свойств C#. Не волнуйтесь, если вы еще ни разу не писали ни строчки кода – я буду вашим доброжелательным проводником, и мы разберем эту тему шаг за шагом. К концу этого учебника вы станете профи в свойствах!

C# - Properties

Что такое свойства?

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

Почему использовать свойства?

  1. Инкапсуляция: Они помогают скрыть внутренние работы класса.
  2. Гибкость: Вы можете изменять способ хранения данных, не изменяя способ их доступа.
  3. Валидация: Вы можете добавлять проверки, чтобы убедиться, что данные являютсяvalid до их установки.

Теперь давайте脏 our руки с кодом!

Базовый синтаксис свойства

Вот самая простая форма свойства:

public class Person
{
private string name;

public string Name
{
get { return name; }
set { name = value; }
}
}

В этом примере Name是我们的属性。 Он связан с частным полем name. Части get и set называются доступами.

Доступы

Свойства имеют два основных доступа:

  1. get: Получает значение свойства
  2. 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