c# 引用类型构造器
2012-10-29 13:54
399 查看
创建一个引用类型的实例时,
首先为实例的数据字段分配内存,
然后初始化对象的附加字段(对象指针、同步块索引),
最后调用类型中定义的实例构造器来设置对象的初始化状态。
构造引用类型的对象时,在调用类型的实例构造器之前,为对象分配所有字段的内存总是被先归零或为null。
实例构造器永远不能被继续。如果定义的类中没有显式构造器,
c#编译器将定义一个默认构造器,在它的实现中,只是简单调用基类的无参构造器。
所以:
public class SomeType{}
等价于
public class SomeTyoe{
public SomeType():base(){}
}
如果类的修饰符是abstract,那么编译器生成的默认的构造器是protected,否则是public。
如果基类没有提供无参构造器,那么派生类就必须显示调用一个基类构造器,否则编译报错。
如果是静态类,那么类没有实例构造器。
在类中访问基类的字段之前,必须调用基类的构造器,如果没有显式调用基类的构造器,
c#编译器会自动生成对默认的基类构造器的调用,最后会调用Object的构造器。
首先为实例的数据字段分配内存,
然后初始化对象的附加字段(对象指针、同步块索引),
最后调用类型中定义的实例构造器来设置对象的初始化状态。
构造引用类型的对象时,在调用类型的实例构造器之前,为对象分配所有字段的内存总是被先归零或为null。
实例构造器永远不能被继续。如果定义的类中没有显式构造器,
c#编译器将定义一个默认构造器,在它的实现中,只是简单调用基类的无参构造器。
所以:
public class SomeType{}
等价于
public class SomeTyoe{
public SomeType():base(){}
}
如果类的修饰符是abstract,那么编译器生成的默认的构造器是protected,否则是public。
如果基类没有提供无参构造器,那么派生类就必须显示调用一个基类构造器,否则编译报错。
如果是静态类,那么类没有实例构造器。
在类中访问基类的字段之前,必须调用基类的构造器,如果没有显式调用基类的构造器,
c#编译器会自动生成对默认的基类构造器的调用,最后会调用Object的构造器。
您可能感兴趣的文章:
相关文章推荐
- C# 引用类型、值类型
- 【C#】List列表的深复制,引用类型深复制
- c# 值类型和引用类型
- C# 值类型 与 引用类型
- C#的类型:值类型、引用类型
- C# 中堆栈,堆,值类型,引用类型的理解 (摘抄)
- C#值类型与引用类型
- C#学习之值类型与引用类型
- 栈和托管堆.值类型和引用类型.强制类型转换.装箱和拆箱[C#]
- [学习笔记]Asp.net(C#)菜鸟进级系列之引用类型
- 十九:构造器之一:实例构造器和类(引用类型)
- C# 在引用类型做为参数时的一个细节
- c#值类型和引用类型
- 对C# 中堆栈,堆,值类型,引用类型的理解
- c#字符串值类型与引用类型比较示例
- 理解C#值类型与引用类型
- C#基础实践:引用与值类型
- 看了关于《C#程序员请不要混淆引用类型和ref引用传参》想到的
- C# 引用类型-数组类型
- C#引用类型