11.类的构造(2)
1. 构造器会显示(" 我是类A的无参构造器"and"我是类B的无参构造器")
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
B b = new B(45);
}
}
class A
{
public A()
{
MessageBox.Show(" 我是类A的无参构造器");
}
}
class B:A
{
public B()
{
MessageBox.Show("我是类B的无参构造器");
}
}
2.带有一个参数的构造器会显示(" 我是类A的无参构造器"and"我是类B的带有一个参数的构造器")
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
B b = new B(45);
}
}
class A
{
public A()
{
MessageBox.Show(" 我是类A的无参构造器"); //去掉无参构造器会出错
}
public A(int i)
{
MessageBox.Show("我是类A的带有一个参数的构造器");
}
}
class B:A
{
public B()
{
MessageBox.Show("我是类B的无参构造器");
}
public B(int i):
{
MessageBox.Show("我是类B的带有一个参数的构造器");
}
}
3. 如果想显示类A可以用 base关键字会显示("我是类A的带有一个参数的构造器"and"我是类B的带有一个参数的构造器")
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
B b = new B(45);
}
}
class A
{
public A()
{
MessageBox.Show(" 我是类A的无参构造器");
}
public A(int i)
{
MessageBox.Show("我是类A的带有一个参数的构造器");
}
}
class B:A
{
public B()
{
MessageBox.Show("我是类B的无参构造器");
}
public B(int i):base (i)
{
MessageBox.Show("我是类B的带有一个参数的构造器");
}
}
4. 静态构造器注意的事项( static constructor )
1.静态构造器在任何实例变量分配之前执行。显示为("我是类A的静态构造器"and"100")
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show(A.i+"");
}
}
class A
{
public static int i = 100;//“i”为空时; 默认值为0
static A()
{
MessageBox.Show("我是类A的静态构造器");
}
public A()
{
MessageBox.Show(" 我是类A的无参构造器");
}
}
5.在一个程序的执行过程中静态构造器最多只执行一次
(1)显示为("我是类A的静态构造器"and" 我是类A的无参构造器")
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
A a = new A();
}
}
class A
{
public static int i = 100;
static A()
{
MessageBox.Show("我是类A的静态构造器");
}
public A()
{
MessageBox.Show(" 我是类A的无参构造器");
}
}
(2)显示为("我是类A的静态构造器"and" 我是类A的无参构造器"and" 我是类A的无参构造器")
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
A a = new A();
A a1 = new A();
}
}
class A
{
public static int i = 100;
static A()
{
MessageBox.Show("我是类A的静态构造器");
}
public A()
{
MessageBox.Show(" 我是类A的无参构造器");
}
}