【发布时间】:2011-07-17 11:09:38
【问题描述】:
我试图在 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。这很方便,因为我们不必在访问它的成员之前检查任何属性是否为空。无论属性是否水合,对于消费类,它们永远不会是“空的”。如果属性未初始化,则代码需要在每次访问属性之前检查 null。
“一个类的所有属性都应该在任何时候都被初始化并且永远不会为空”的笼统约定真的很糟糕吗?
除了使用一些资源来实例化和存储这些“默认”类实例之外,节省空异常检查代码似乎是值得的。我们错过了什么吗?
【问题讨论】:
标签: c# .net coding-style class-design instance-variables