background image

尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。

结构不能声明默认构造函数(没有参数的构造函数)或析构函数。

结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,
编译器通过为所有字段赋予默认值(参见默认值表)来实现默认构造函数。结构不能从类
或其他结构继承。

 

结构是值类型 -- 如果从结构创建一个对象并将该对象赋给某个变量,变量则包含结构的
全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变

 

旧副本的数据。由于结构不使用引用,因此结构没有标识 -- 具有相同数据的两个值类型
实例是无法区分的。C# 

 

中的所有值类型本质上都继承自 ValueType

 

,后者继承自 Object。

编译器可以在一个称为装箱的过程中将值类型转换为引用类型。

结构具有以下特点:
1.结构是值类型,而类是引用类型。

2.向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。

3.

 

与类不同,结构的实例化可以不使用 new 运算符。

4.结构可以声明构造函数,但它们必须带参数。

一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 
System.ValueType

 

,后者继承自 System.Object。

结构可以实现接口。

在结构中初始化实例字段是错误的。

12.什么叫应用程序域?什么是托管代码?什么是强类型系统?什么是装箱和拆箱?什么
是重载?CTS、CLS 和 CLR 分别作何解释?
应用程序域

应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域通常
由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序
域提供了一个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序
之间的隔离。

托管代码

使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优