这两种方法有区别吗?
在这种方法中,我使用 getter 来初始化 DataTable
public DataTable Res
{
get
{
if (Res == null)
{
Res = GetDataTable();
}
return Res ;
}
private set;
}
对比
在这种方法中,我使用构造函数来初始化 DataTable
public class XYZ
{
public DataTable Res{ get; private set;}
//constructor
public XYZ()
{
Res= GetDataTable();
}
}
此变量在 ASP.net 页面上用于填充下拉列表。哪个会表现更好?
编辑:-
这用于数据不会更改的 Web 应用程序。我将此表绑定(bind)到 Page_Load 事件中的下拉列表。
最佳答案
问题是 XYZ
类的给定实例是否始终需要并使用 DataTable
。
如果没有,那么您需要延迟初始化(使用 getter),以避免毫无意义地预先完成工作。
如果您始终需要它,那么下一个问题是在类的实例化和对 Res
属性的调用之间是否存在潜在的任何实质性延迟。如果是这样,那么在实例化时加载数据可能意味着您的数据比等到调用属性 getter 时的数据更陈旧。
相反的一面不一定适用于 Web 场景,但在其他应用程序中,我们需要考虑对属性的调用是否需要高度响应以防止 UI 卡住。在这种情况下,预加载数据可能更好。
关于c# - 在 Getter 或构造函数中初始化成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611753/