using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestConstructorSeq
{
class Program
{
public class A
{
public A()
{
Console.WriteLine("I am A");
}
static A()
{
Console.WriteLine("I am static A");
}
}
public class B:A
{
public B()
{
Console.WriteLine("I am B");
}
static B()
{
Console.WriteLine("I am static B");
}
}
static void Main(string[] args)
{
B b = new B(); //This outputs
//I am Static B
Console.ReadLine(); //I am Static A
} //I am A
//I am B
}
}
=================================================================================
But this static constructor execution pattern changes in this 3 level inheritance
=================================================================================
class Program
{
public Program()
{
Console.WriteLine("I am p");
}
static Program()
{
Console.WriteLine("I am sp");
}
class Program1:Program
{
public Program1()
{
Console.WriteLine("I am p1");
}
static Program1()
{
Console.WriteLine("I am sp1");
}
}
class Program2 : Program1
{
public Program2()
{
Console.WriteLine("I am p2");
}
static Program2()
{
Console.WriteLine("I am sp2");
}
}
static void Main(string[] args)
{
Program2 p2 = new Program2();
Console.ReadLine();
}
}
}
//Check out the difference between the two
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment