在页面partial或method中实例化ASP.NET中的C#类

时间:2013-06-26 20:05:07

标签: c# asp.net class

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

部分内容示例:

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();
}

3 个答案:

答案 0 :(得分:2)

在大多数网页中,实际上并没有太大差异。

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

第二个示例将在Page_Load事件中创建实例,该事件直到页面生命周期的大致中间才会发生。

有关页面生命周期的详细信息,请参阅ASP.NET Page Life Cycle Overview

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

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

所以,在大多数页面中,并没有实际的区别。

答案 1 :(得分:1)

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

可能需要考虑的其他重要事项是,如果特定对象的创建与否很重要。

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

如果您多次创建同一个实例,并且您可以使用单个全局实例执行相同的工作,则第一个场景可能更合适。只是为了避免重复相同的实例化行。

答案 2 :(得分:1)

  • 在第一种情况下,类cSystem将只创建一次 请求。
  • 在第二种情况下,单击提交按钮时将创建两次类cSystem,一个在Page_Load方法中,另一个在btnSubmit_Click方法中。