Я пытался найти похожий вопрос на SO, но безуспешно.Извините, если это дубликат.
Каковы недостатки создания экземпляров переменных типа класса при их объявлении?
Во многих классах, представляющих модель бизнес-объектов, у нас есть такие вещи:
public class RateArea {...}
public class FlatRateSchedule
{
public string ScheduleID {get;set;}
public decimal MaxAmount {get;set;}
}
public class PricingData
{
private List<RateArea> rateAreaList = new List<RateArea>();
private FlatRateSchedule flatRateSchedule = new FlatRateSchedule();
public List<RateArea> RateAreaList
{
get { return rateAreaList; }
set { rateAreaList = value; }
}
public List<FlatRateSchedule> FlatRateScheduleList
{
get { return flatRateScheduleList; }
set { flatRateScheduleList = value; }
}
}
В какой-то момент этот класс PricingData инициализирован, а некоторые свойства гидратированы (но не всегда все свойства).
Считается, что мы создаем "пустые" экземпляры классов, так что нетсвойства всегда null
.Это удобно, потому что мы никогда не должны проверять, является ли какое-либо свойство нулевым, прежде чем получить доступ к его элементам.Независимо от того, являются ли свойства гидратированными или нет, они никогда не будут нулевыми для класса потребления.Если свойства не инициализированы, то код должен проверять наличие нуля каждый раз перед обращением к свойству.
Является общим соглашением, что «все свойства класса должны быть инициализированы всегда и никогда не быть нулевыми» на самом делеплохо?
Помимо использования некоторых ресурсов для создания экземпляров и хранения этих экземпляров классов «по умолчанию», экономия в коде проверки исключений с нулевым значением выглядит оправданной.Мы что-то упустили?