В существующем коде моего проекта в ряде мест свойство объявляется так:
public long ResourceID
{
get
{
return this.resourceID;
}
set
{
if (this.resourceID != value)
{
this.resourceID = value;
}
}
}
Примечание: private long resourceID
уже объявлено.
Свойства не только значениятипы , но также и ссылочные типы (включая строку) тоже объявляются следующим образом.
Другой пример:
public Collection<Ability> Abilities
{
get
{
return this.abilities;
}
set
{
if (value == null)
{
throw new ArgumentNullException("Abilities");
}
this.abilities = value;
}
}
Насколько мне известно, сеттер в первом примере не имеет никакого смысла, и условие if
здесь не имеет смысла.Поэтому я решил изменить код (как часть рефакторинга), чтобы сделать их Авто-Свойства.(Во втором примере мне нужен сеттер, так как там обрабатывается исключение.)
Я хочу узнать от экспертов здесь, будет ли создание каких-либо автоматических свойств существующих свойств (или по крайней мере удаление условия if
из сеттера) причинить какой-либо вред?Иногда есть тонкие вещи, о которых разработчик может не знать, и некоторые изменения могут также иметь побочные эффекты.Вот почему я задаю этот вопрос.(Мои библиотеки используются во многих местах.)
Примечание. Дайте мне знать, если это чисто домашний вопрос.