6

我可能没有解释清楚。但是在部分类中创建类与在每个方法中创建类有什么缺点?(请参阅示例)

部分内部示例:

public partial class test: System.Web.UI.Page
{

cSystem oSystem = new cSystem();

protected void Page_Load(object sender, EventArgs e)
    {
    oSystem.useme();
}
protected void btnSubmit_Click(object sender, EventArgs e)
    {
    oSystem.usethis();
}

相对

每个类中的示例:

public partial class test: System.Web.UI.Page
{


protected void Page_Load(object sender, EventArgs e)
    {
    cSystem oSystem = new cSystem();
    oSystem.useme();
}
 protected void btnSubmit_Click(object sender, EventArgs e)
    {
    cSystem oSystem = new cSystem();
    oSystem.usethis();
}
4

3 回答 3

2

在大多数页面中,实际上不会有那么大的差异。

第一个示例将在创建实例时创建实例PageoSystem将在页面的整个生命周期内可用。

第二个示例将Page_Load在页面生命周期的大约中间才发生的事件中创建实例。

有关页面生命周期的详细信息,请参阅ASP.NET 页面生命周期概述

如果您想更早地使用实例,例如在Page_Init事件中,那么前一个示例不会足够早地分配对象。

如果您的应用程序需要高性能,需要非常高效的内存管理,您可能更喜欢后一个示例。此示例将在更接近使用时分配内存,因此它占用资源的时间不会超过它需要的时间。也就是说,如果您想要高效的内存管理,您可以进行大量优化。

因此,在大多数页面中,没有实际差异。

于 2013-06-26T20:13:33.830 回答
1

如果您需要将对象状态保持在方法范围之外,那么在每个方法上创建新实例都会出现问题。在这种情况下,每个方法的一个实例是错误的,但我认为这不是你的情况。

可能需要考虑的其他重要事项是该特定对象是否难以创建。

在大多数情况下,这只是一个品味问题,因为从性能的角度来看,它通常没有任何区别。

如果您多次创建同一个实例并且您可以对单个全局实例执行相同的工作,那么第一种情况可能更合适。只是为了避免重复相同的实例化行。

于 2013-06-26T20:12:02.300 回答
1
  • 在第一种情况下,类 cSystem 将只为请求创建一次。
  • 在第二种情况下,当您单击提交按钮时,类 cSystem 将被创建两次,一次在Page_Load方法中,另一次在btnSubmit_Click方法中。
于 2013-06-26T20:17:40.587 回答