Автоматично изграждане на свойства
Едно от най-новите синтактични подобрения е
автоматичното изграждане на свойства. Въпреки, че това не е радикално
нововъведение е подходящо да му отделим малко внимание.
Когато създаваме класове добрият стил изисква
всички полета/променливи да са капсулирани и маркирани като частни или защитени
(private/protected). Ако
съдържанието на някое поле трябва да бъде използвано от външни за класа методи,
то трябва да се обвие в свойство. За свойства, които имат сложни getters
и setters (напр. Преди са се върне стойността на
полето се създава запис в лога) това е удобен начин да построим класа, но за
останалите свойства е малко досадно да създаваме множество от подобни двойки
поле/свойство:
|
private string fullName;
public string FullName
{
get { return fullName; }
set { fullName = value; }
}
|
Последното въведение в C# 3.0 позволява да съкратим кода, който пишем до:
|
public string FullName { get; set; }
|
и вече в методите на класа (а и извън тях) може да
достъпваме декларираното свойство. По разбираеми причини вече не може да се
объркаме и да използваме полето вместо свойството, както беше възможно в
по-горният случай.
Нека обаче да погледнем какво е генерирал
компилатора от този код :
С изключение на странното име на полето, останалата
част изглежда така както я бихме написали сами.
Както виждате това само по себе си не е
революционно нововъведение, но то би могло да съкрати кода, който пишем
оставяйки ни повече време за мислене върху по-сериозни проблеми.
Както навярно сами се досещате, това може да бъде
приложено само в свойства без допълнителна логика в getters и setters.
Следваща част: Разширяващи методи (Extension Methods)