我可能没有清楚地解释这一点。但是在部分类内部和每个方法内部创建类有什么缺点? (请参阅示例)
部分内容示例:
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();
}
答案 0 :(得分:2)
在大多数网页中,实际上并没有太大差异。
第一个示例将在创建Page
时创建实例。 oSystem
将在页面的整个生命周期内可用。
第二个示例将在Page_Load
事件中创建实例,该事件直到页面生命周期的大致中间才会发生。
有关页面生命周期的详细信息,请参阅ASP.NET Page Life Cycle Overview。
如果您想先使用该实例,例如在Page_Init
事件中,则前一个示例不会更早地分配对象。
如果您的应用程序需要高性能,需要非常有效的内存管理,您可能更喜欢后一个示例。这个例子会将内存分配得更接近于何时使用,因此它不会占用资源超过它所需的时间。也就是说,如果你想要有效的内存管理,你可以进行大量的优化。
所以,在大多数页面中,并没有实际的区别。
答案 1 :(得分:1)
如果您需要将对象状态保持在方法范围之外,那么在每个方法上创建新实例的情况就会出现问题。在这种情况下,每个方法的实例都是错误的,但我认为情况并非如此。
可能需要考虑的其他重要事项是,如果特定对象的创建与否很重要。
在大多数情况下,只是一个品味的问题,从性能的角度来看,它通常没有区别。
如果您多次创建同一个实例,并且您可以使用单个全局实例执行相同的工作,则第一个场景可能更合适。只是为了避免重复相同的实例化行。
答案 2 :(得分:1)
Page_Load
方法中,另一个在btnSubmit_Click
方法中。