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