c#构造初始化的顺序浅析
这个很基础的知识,但我至今才意识到它。想想也很失败。
直接上代码:很简单
public class Base
{
int i=0;
public Base()
{
System.Console.WriteLine(我是基类构造器);
}
}
class Program
{
static void Main(string[] args)
{
Base d = new Base();
}
}
对于上面的代码。是先执行构造器,还是先初使化字段 i 变量呢?其实只要意识到这个问题,也就很容易试出来,它应当是先初使化字段 i 变量。
那么现在如果Base 派生出一个子类,那它的构造顺序又是怎么样的呢?
///
/// 基类
///
public class Base
{
public int baseint = 100;
public Base()
{
System.Console.WriteLine(构造器:我是基类构造器);
}
private class Inner
{
public Inner()
{
System.Console.WriteLine(字段:我是基类Inner);
}
}
///
/// 字段初使化
///
private Inner inner = new Inner();
}
///
/// 子类
///
class Derived : Base
{
public Derived()
{
System.Console.WriteLine(构造器:我是子类构造器);
}
private class Inner
{
public Inner()
{
System.Console.WriteLine(字段:我是子类Inner);
}
}
///
/// 字段初使化
///
private Inner inner = new Inner();
}
所以说它的执行顺序为:子类字段-父类字段-父类构造器-子类构造器
同类资源
- XML模块,XML调用和构造
XML模块,XML调用和构造本文件感兴趣的可以参考一下,最近闲来无事写的模块。...
- 顺序表储存数据
顺序表储存数据例子源代码,100万次添加用时那么长时间,有没有办法优化。...
- 虚拟机重置网卡后Centos找不到eth0的解决,一键初始化虚拟机网卡
易语言虚拟机重置网卡后Centos找不到eth0的解决,一键初始化虚拟机网卡例子源代码,直接调用取随机数即可不需...
- 字母顺序组合模块
易语言字母顺序组合模块例子,添加模块应用后直接可以查看具体的使用方法了,无法无限循环,本模块最多只能组合...
- 取N个数组正确顺序,倒顺重复数组
易语言取N个数组正确顺序,倒顺重复数组例子源代码。...
- GDI+多张图片按顺序上下无缝组合
GDI+多张图片按顺序上下无缝组合例子源代码,把多张图片按顺序上下无缝组合成一张长图片。...
- 汇编生成指定范围内顺序文本型数组
易语言汇编生成指定范围内顺序文本型数组例子源代码,生成顺序文本数组。...
- 改编模块中的数组排序,支持多列和数字顺序
易语言改编模块中的数组排序,支持多列和数字顺序例子源代码,使用了N多代码简单的实现了文本中有数字时,数字...
- 寻找文本冒泡排序来排序数字字母顺序
易语言寻找文本冒泡排序来排序数字字母顺序例子源代码,没啥说的看代码。...
- jQuery初始化添加删除标签
jQuery初始化添加删除标签源代码基于jquery.1.10.2.min.js制作。...
- 基于TCP协议构造的网络验证
易语言基于TCP协议构造的网络验证例子源代码,首先声明一点,这是本人无聊时整出来的一款网络验证,实用性还可...
- 文件按时间顺序排序
易语言文件按时间顺序排序例子源代码,然后想着还是自己想办法解决算了,然后就想出的这个几个方法。...