作为参数传递时被复制(即,它们通过值来传递).在 .NET Framework 中,这 些称为值类型.您可以创建值类型的实例,将它们作为参数传递,将它们存储为 局部变量,或将它们存储在另一值类型或对象的字段中.值类型没有与存储类的
实例相关的系统开销,并且它们不需要构造函数.值类型可以有字段,属性和事 件.它们也有静态和非静态方法.当它们被装箱时,会从 System.ValueType 继 承虚方法,并可实现零个或更多接口.值类型是密封的,这意味着不能从它们派 生出其他类型.但是,可以直接对值类型定义虚方法,并且既可对该类型的已装 箱形式,也可对未装箱形式调用这些方法.尽管不能从一种值类型派生出另一种 类型,但是当所用语言处理虚方法比处理非虚方法或静态方法更方便时,可以对 值类型定义虚方法. 引用类型的变量又称为对象,可存储对实际数据的引用.以下用于声明引用类型 的关键字:
class interface delegate
8. 结构体是值类型还是引用类型的? 是值类型. 9. C#中有没有静态构造函数,如果有是做什么用的?
有. 静态构造函数用于初始化类.在创建第一个实例或引用任何静态 成员之前,将自动调用静态构造函数来初始化类.静态构造函数既没有访问修饰 符,也没有参数.在创建第一个实例或引用任何静态成员之前,将自动调用静态 构造函数来初始化类.无法直接调用静态构造函数.在程序中,用户无法控制何 时执行静态构造函数.静态构造函数的典型用途是:当类使用日志文件时,将使 用这种构造函数向
日志文件中写入项.
10.
在 C#中如何实现多态?
"多态性"指定义具有功能不同但名称相同的方法或属性的多个类的 能力,这些类可由客户端代码在运行时交换使用.大部分面向对象的编程系统都 通过继承提供多态性. 基于继承的多态性涉及在基类中定义方法并在派生类中使 用新实现重写它们.
11. 什么是反射?如何实现反射? 反射则提供了封装程序集, 模块和类型的对象. 您可以使用反射动态地创建类型的 实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的 方法或访问其字段和属性.通过反射命名空间中的类以及 System.Type,您可以获 取有关已加载的程序集和在其中定义的类型(如类,接口和值类型)的信息.您也 可以使用反射在运行时创建类型实例,然后调用和访问这些实例. 请解释流与文件有什么不同? 文件是一些具有永久存储及特定顺序的字节组成的一个有序的,具有名称的集合. 因此, 对于文件, 人们常会想到目录路径, 磁盘存储, 文件和目录名等方面.相反, 流提供一种向后备存储器写入字节和从后备存储器读取字节的方式, 后备存储器可 以为多种存储媒介之一. 正如除磁盘外存在多种后备存储器一样, 除文件流之外也
12.
存在多种流.例如,还存在
网络流,内存流和磁带流等. 13. 程序集与命名空间有什么不同? 命名空间是用于避免命名冲突,专用于组织代码,当代码要在其他某个应用
程序中重用时,可以降低复杂性. 程序集是重用代码的一种方式
不同: 可以将相同命名空间中的类部署到不同的程序集中,也可以命名空间中的类 部署到一个程序集中 命名空间 程序集
有逻辑编译时机制 不是运行时实体 为
源代码元素的名称提供逻辑结构
有物理编译时机制 是运行时实体 为可执行文件的运行时提供物理结 构
14. 15. 16. 17. 18. 19.
请编写一个捕获所有错误的错误处理代码 Try{ … }catch(Exception e){…} 委托与事件是什么关系?为什么要使用委托
委托提供了封装方法的方式,事件是某动作已发生的说明,事件是建立于 委托之上的 程序运行时同一个委托能够用来调用不同的方法只要改变它的引用方法即可 同一个委托能够用来调用不同的方法,只要改变它引用的方法即可,因此委托调 节器用的方法不是在编译时决定的,而是在运行时确定的.
20.
一个类中有几种元素?
类由字段,属性,方