与类不同,结构的实例化可以不使用 new 运算符。
结构可以声明构造函数,但它们必须带参数。
一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自
System.ValueType,后者继承自 System.Object。
结构可以实现接口。
在结构中初始化实例字段是错误的。
22.什么叫应用程序域?
什么是托管代码?
什么是强类型系统?
什么是装箱和拆箱?
什么是重载?
CTS、CLS 和 CLR 分别作何解释?
答:应用程序域:应用程序域为安全性、可靠性、版本控制以及卸载程序集提供了隔离边界。应用程序域
通常由运行库宿主创建,运行库宿主负责在运行应用程序之前引导公共语言运行库。应用程序域提供了一
个更安全、用途更广的处理单元,公共语言运行库可使用该单元提供应用程序之间的隔离。
托管代码:使用基于公共语言运行库的语言编译器开发的代码称为托管代码;托管代码具有许多优点,
例如:跨语言集成、跨语言异常处理、增强的安全性、版本控制和部署支持、简化的组件交互模型、调试
和分析服务等。
强类型:C# 是强类型语言;因此每个变量和对象都必须具有声明类型。
装箱和拆箱:装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用
类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。拆箱将从对象中提取值类型。
重载:每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序
和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称的多种方法。当定义两种或多种具
有相同名称的方法时,就称作重载。
CTS
公共语言规范 :要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调
用方公开那些它们必须与之互用的所有语言的通用功能。为此定义了公共语言规范 (CLS),它是许多应用
程序所需的一套基本语言功能。
23.值类型和引用类型的区别?
答:基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与
引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
所有的值类型均隐式派生自 System.ValueType。与引用类型不同,从值类型不可能派生出新的类
型。但与引用类型相同的是,结构也可以实现接口。