Field initializers runs before the constructor call. So In Case 1 your object of PersonDataContext
will be created before the constructor call.
PersonDataContext persons = new PersonDataContext();
In 2nd case, your constructor will execute first and then it will initialize the field.
You can do a simple test
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();
}
}
and then in your Main method
static void Main(string[] args)
{
Data d1 = new Data();
Data2 d2 = new Data2();
Console.Read();
}
Output
In PersonDataContext Constructor // Case 1
In Data Contructor //Case 1
In Data2 Constructor //Case 2
In PersonDataContext Constructor // Case 2
For the asp example, In first case your Field is initialized before the Page_Load
event, and in 2nd case your Field is initialized in the Page_Load
event