Tuy*_*yen 6 c# asp.net object-initialization
以下两种情况有什么区别:
class Data
{
PersonDataContext persons = new PersonDataContext();
public Data() {}
}
Run Code Online (Sandbox Code Playgroud)
与
class Data
{
PersonDataContext persons;
public Data()
{
persons = new PersonDataContext();
}
}
Run Code Online (Sandbox Code Playgroud)
我在asp.net中有同样的问题:
public partial class Data : System.Web.UI.Page
{
PersonDataContext persons = new PersonDataContext();
protected void Page_Load(object sender, EventArgs e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
与
public partial class Data : System.Web.UI.Page
{
PersonDataContext persons;
protected void Page_Load(object sender, EventArgs e)
{
persons = new PersonDataContext();
}
}
Run Code Online (Sandbox Code Playgroud)
字段初始值设定项在构造函数调用之前运行。因此,在情况 1 中,您的对象PersonDataContext将在构造函数调用之前创建。
PersonDataContext persons = new PersonDataContext();
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,您的构造函数将首先执行,然后初始化该字段。
你可以做一个简单的测试
class PersonDataContext
{
public PersonDataContext()
{
Console.WriteLine("In PersonDataContext Constructor");
}
}
class Data
{
PersonDataContext persons = new PersonDataContext();
public Data()
{
Console.WriteLine("In Data Contructor");
}
}
class Data2
{
PersonDataContext persons;
public Data2()
{
Console.WriteLine("In Data2 Constructor");
persons = new PersonDataContext();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的 Main 方法中
static void Main(string[] args)
{
Data d1 = new Data();
Data2 d2 = new Data2();
Console.Read();
}
Run Code Online (Sandbox Code Playgroud)
输出
在 PersonDataContext 构造函数中 // 情况 1
在数据构造器中 //案例 1
在 Data2 构造函数中 //案例 2
在 PersonDataContext 构造函数中 // 情况 2
对于 asp 示例,在第一种情况下,您的字段在事件之前初始化,在第二种情况下,您的字段在事件Page_Load中初始化Page_Load
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |