gpt4 book ai didi

c# - 在 Getter 或构造函数中初始化成员

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:10 27 4
gpt4 key购买 nike

这两种方法有区别吗?

在这种方法中,我使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com