面向对象程序设计习题库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计习题库
选择题
1. 一个设计得好的面向对象系统具有〔D〕特征。

A 低聚、低耦合
B 高聚、低耦合
C 高聚、高耦合
D 低聚、高耦合
2. 面向对象程序设计的特点主要概括为〔C〕。

A 可分解性、可组合性、可分类性
B 继承性、封装性、多态性
C 抽象封装性、继承性、多态性
D 封装性、易维护性、可扩展性、可重用性
3. 关于C#程序的书写,以下不正确的说法是( D )。

A. 区分大小写
B. 一行可以写多条语句
C. 一条语句可写成多行
D. 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法
4. 关于C#语言的根本语法,以下哪些说确的是〔 C 〕
A. C#语言使用using 来引用需要用到的命名空间;
B. 用C#编写的程序中,Main 函数是唯一允许的全局函数;
C. C#语言中使用的名称严格区分大小写;
D. C#中一条语句必须写在一行;
5 以下标识符中,正确的选项是〔A 〕。

A._nName
B. typeof
C. 6b
D. x5#
6.字符串连接运算符包括&和〔A〕。

A. +
B. -
C. *
D. /
7.拆箱是关于:〔 B 〕
A、值类型到引用类型的转换
B、引用类型到值类型的转换
C、引用类型到引用类型的转换
D、值类型到值类型的转换
8.装箱是关于:〔 A 〕
A、值类型到引用类型的转换
B、引用类型到值类型的转换
C、引用类型到引用类型的转换
D、值类型到值类型的转换
9.以下引用类型和值类型描述正确的选项是〔A 〕。

A. 引用类型变量保存存地址,值类型直接保存变量值
B. 引用类型在变量中直接保存变量值,值类型保存存地址
C. 引用类型和值类型保存数据的方式一样
D. .NET Framework不支持值类型,因为所有的类型都是引用类型了
10.一个类中的静态方法的调用可以:( A )
A、通过类名调用
B、通过实例化的对象调用
C、在主方法中直接调用
D、在同一个类中的某一方法中直接调用
11.以下数据类型中,属于引用类型的是:(A )
A、string类型
B、double类型
C、int类型
D、char类型
12.以下类型中为值类型的是( C )
A. 字符串类型
B. 树组类型
C. 枚举类型
D. 接口类型
13.decimal类型和浮点类型都可以表示小数,正确说法:( C )
A. 两者没有任何区别
B. 小数类型比浮点类型取值围大
C.小数类型比浮点类型精度高
D. 小数类型比浮点类型精度低
14. 有定义语句:int [,]a=new int[5,6]; 那么以下正确的数组元素的引用是__C__。

A. a(3,4)
B. a(3)(4)
C. a[3][4]
D. a[3,4]
15. 在C#编制的财务程序中,需要创立一个存储流动资金金额的临时变量,那么应使用以下哪条语句?( A )
A. decimal theMoney;
B. int theMoney;
C. string theMoney;
D. double theMoney;
16. 在C#中,表示一个字符串的变量应使用以下哪条语句定义?( B )
A. CString str;
B. string str;
C. Dim str as string
D. char * str;
17. C#中每个int 类型的变量占用( C )个字节的存。

A. 1
B. 2
C. 4
D. 8
18.假定一个10行20列的二维整型数组,以下哪个定义语句是正确的〔C〕。

A. int[]arr = new int[10,20]
B. int[]arr = int new[10,20]
C. int[,]arr = new int[10,20]
D. int[,]arr = new int[20;10]
19. 枚举型常量的值不可以是( D )类型
A. int
B. long
C. ushort
D. doule
20.引用类型主要有4种:类类型、数组类型、接口类型和〔C〕。

A.对象类型
B.字符串类型
C.委托类型
D.整数类型
21. 分析以下语句:
namespace TestCS
{
public delegate void Hello(string target);
}
该语句的作用是:( D )
A. 在TestCS 命名空间中定义了一个名为Hello 的全局方法;
B. 在TestCS 命名空间中声明了函数Hello 的原型;
C. 在TestCS 命名空间中定义了一个名为Hello 的函数指针;
D. 在TestCS 命名空间中定义了了一个名为Hello 的委托类型;
22. 以下关于for循环的说法不正确的选项是( A )。

A. for循环只能用于循环次数已经确定的情况
B. for循环是先判定表达式,后执行循环体语句
C. for循环中,可以用break语句跳出循环体
D. for循环体语句中,可以包含多条语句,但要用花括号括起来。

23.下面对异常说法不正确的选项是( D )
A.try/catch块为根本引发异常的组合
B.在捕获异常时,可以有多个catch块
C.无论异常是否发生,finally块总会执行
D.try块和finally 不能连用
24. C#程序中,可使用try..catch 机制来处理程序出现的〔 B 〕错误。

A. 语法
B. 运行
C. 逻辑
D. 拼写
25. 为了能够在程序中捕获所有的异常,在catch语句的括号中使用的类名为( A )_。

A. Exception
B. DivideByZeroException
C. FormatException
D. 以上三个均可
26. C#源程序文件的默认扩展名为( C )。

A. cpp
B. exe
C. cs
D. lik
27. 以下的( D )不是构造函数的特征。

A. 构造函数的函数名和类名一样
B. 构造函数可以重载
C. 构造函数可以带有参数
D. 可以指定构造函数的返回值
28.类的析构函数的作用是( D )
A.一般成员函数
B.类的初始化
C.对象的初始化
D.释放资源
29.类的析构函数是在( C )调用的。

A.类创立时
B.创立对象时
C.销毁对象时
D.不自动调用
30. 在C#程序中,可以使用( A )属性来引用处于非托管代码环境中的函数。

A. [DllImport]
B. [Conditional]
C. [STAThread]
D. [SecureMethod]
31.对托管代码与非托管代码之间的区别描述正确的选项是〔 D 〕。

A. 非托管代码依赖于CLR提供的效劳,而托管代码不需要
B. 托管代码生成的应用程序为目标机器上可执行文件,非托管代码生成的应用程序为中间语言文件
C. 托管代码和非托管代码之间没有区别
D.托管代码依赖于CLR提供的效劳,而非托管代码不需要
32.在System.IO命名空间中〔C〕类是实现创立、移动、枚举目录和子目录的实例方法。

A.Diretory B.File C.DirectoryInfo D.FileInfo
33.下面对程序集和命名空间说确的是〔B 〕。

A. 一个程序集只能引用一个命名空间
B. 一个程序集可以引用多个命名空间,一个命名空间也可以保存在多个程序集中
C. 一个程序集可以引用多个命名空间,但一个命名空间只能保存在一个程序集中
D. 一个命名空间可以保存在多个程序集中,命名空间无法包含另外的命名空间
34.〔 C 〕命名空间中的类和接口用于创立Web 应用程序的页面?
A. System.Drawing
B. System.IO
C. System.Web.UI
D. System.Web.Service
35. 使用( B )命名空间的类访问SQL Server 数据库中的数据。

A. System.Data.OleDb
B. System.Data.SqlClient
C. System.Xml.Serialization
D. System.IO
36.构成对象的两个主要因素是〔 A 〕。

A 属性和操作
B 标识和容
C 继承和多态
D 消息和封装37.下面的修饰符中〔C 〕不是访问修饰符。

A.public B.protected C.new D.internal
38. 在类的定义中,类的( B )描述了该类的对象的行为特征。

A. 类名
B. 方法
C. 所属的名字空间
D. 属性
39.有关类和对象的说法不正确的选项是〔B〕。

A〕对象是类的实例B〕一个类只有一个对象
C〕任何一个对象只能属于一个类D〕类与对象的关系和数据与变量的关系相似E〕类是抽象的,对象是具体的
40. 以下类MyClass 的属性count 属于( B )属性.
class MyClass
{
int i;
int count
{
get{ return i; }
}
}
A. 只写
B. 只读
C. 可读写
D. 不可读不可写
41. 根据下面的代码,可以确定类A与类B之间存在〔 A 〕关系。

public class A {
private B theB;
public void aMethod(){ theB.doSomthing(); }
}
A 关联
B 泛化
C 实现
D 包含
42.继承机制的作用是( D )
A.信息隐藏
B.数据封装
C.定义新类
D.数据抽象
43 类B是由类A继承而来,类A中有一个为M的非虚方法,现在希望在类B中也定义一个名为M的方法,假设希望编译时不出现警告信息,那么在类B中声明该方法时,应使用( B )方法。

A. static
B. new
C. override
D. virtual
44.类的以下特性中,可以用于方便地重用已有的代码和数据的是( C ).
A.多态
B.封装
C.继承
D.抽象
45. 在 中,执行数据库的某个操作,那么至少需要创立〔 A 〕并设置它们的属性,调用适宜的方法:
A. 一个Connection 对象和一个mand 对象
B. 一个Connection 对象和DataSet 对象
C. 一个mand 对象和一个DataSet 对象
D. 一个mand 对象和一个DataAdapter 对象
46.以下说法中对Mdi子窗体描述正确的选项是〔 D 〕
A.设置MdiChildForm属性为true
B.设置MdiChild属性为false
C.设置MdiChild属性为true
D.设置MDI子窗体MDiParent属性引用父窗体实例
47. 使用派生类的主要原因是〔 A 〕。

A 提高代码的可重用性B提高程序的运行效率
C 加强类的封装性
D 实现数据的隐蔽
48、如果一个类至少有一个抽象方法,那么就称该类为( A )。

A抽象类B接口类C密封类D所有类
49、在C#语言中引入泛型,是为了提高( D )。

A程序运行效率B程序通用性
C类的平安性D以上三个方面
50.以下( D ) 对接口方法的述是正确的
A可以是静态的B可以是公有的
C可以是任何访问限制D以上都不对
填空题
1、常用的面向对象的程序语言有:C++、、
等。

参考答案:java c#
2.定义方法时使用的参数是,调用方法时使用的参数是。

参考答案:形参实参
3.数据类型说明符用来说明方法返回值的类型,如果没有返回值,那么其类型说明符应为。

参考答案:void
4、在C#中,进展注释有两种方法:使用// 和使用/* */符号对,其中只能进展单行注释。

参考答案://
5、使用泛型类型可以最大限度地重用代码、以及。

参考答案:保护类型的平安提高性能
6、C#数组元素的下标从开场。

参考答案:0
7.设x为int型变量,请写出描述“x是奇数〞的C#语言表达式。

参考答案:x%2==1
8.字符串str的值为“abcdefgh〞,那么表达式str.Substring(1,3)的值为。

参考答案:bcd
9. 当在程序中执行到语句时,将完毕本层循环类语句或switch语句的执行。

参考答案:break
10. 当在程序中执行到________语句时,将完毕所在循环语句中循环体的一次执行。

参考答案:continue
11. 在switch语句中,在分支的最后应有一个选项。

参考答案:default
12. 在C#语言中,实现从群集中取出每一个元素的循环语句是。

参考答案:foreach
一个命名空间除了可包含其他命名空间外,还可包含、、、枚举、委托等成员。

参考答案:类构造接口
Framework 包括三个主要局部:、和。

参考答案:公共语言运行库类库应用模板
14、在.NET中所有类的基类是。

参考答案:Object
15、抽象模型越简单,它就,也就越具有普遍性。

抽象模型越复杂,就越。

参考答案:越抽象具体
16、在学习新东西时,大脑会自动搜寻以前创立和掌握的抽象/模型,以资借鉴。

这种进展特性比照,找到可供重用的近似抽象的过程又称为和。

参考答案:模式匹配模式重用
17、委托是一种数据类型,它的作用是。

参考答案:允许在运行时选择要调用哪些函数。

18.传入某个属性〔访问器构造〕的SET方法的隐含参数的名称是。

参考答案:value
19、在面向对象的结对关系有三种,分别是:和、。

参考答案要点:一对一一对多多对多
20、在.NET中表示接口的关键字是。

参考答案:interface
21、接口可由、、事件、索引器或这四种成员类型的任意组合构成。

接口不能包
含。

参考答案:方法属性字段
22、在类中假设要实现接口成员,类中的对应成员必须是、,并且与接口成员具
有一样的名称和签名。

参考答案:公共的非静态的
23、在中的对象有、和DataSet等。

参考答案:SqlConnection Sqlmand
24、常用的SQL操作语句有、、和Delete 等。

参考答案:Select 、Update 、Insert
25.Timer控件的属性用来设置定时器Tick事件发生的时间间隔。

参考答案:Interval
26、用以说明类中私有成员的关键字是。

参考答案:〔private〕
27、对类的实例数据成员的访问格式为对象名。

参考答案:〔.数据成员名〕
28、类有两种用法,一种是用于,另一种是通过派生新的类。

参考答案:〔定义对象,继承或派生〕
29 静态成员在类中有两种情况,即和。

参考答案:〔静态成员函数,静态数据成员。

可以颠倒〕
30. 根据类的赋值兼容原那么,派生类对象可以赋给的变量。

参考答案:〔基类〕
31 异常处理,就是针对软件的外部环境出现意外和所作出的适当处理。

参考答案:〔错误〕
32. 静态构造函数是通过来调用的。

参考答案:〔类〕
简答题
1.简述面向对象程序设计的三要素。

参考答案要点:在上述面向对象的根本概念根底之上,不可防止地要涉及到面向对象程序设计所具有的3个共同特征:用户定义类型、继承和多态性。

用户定义类型提供一种表达真实世界的直观代码,便于重用,减少代码量。

继承:不修改代码的条件下进展扩展,派生类较为短小,编写〔维护〕更少;多态如何使同一个消息被不同类型的对象响应。

2.简述面向对象程序设计的抽象和封装。

参考答案要点:抽象是人们认识事物的常用方法,比方地图的绘制。

抽象的过程就是如何简化、概括所观察到的现实世界,并为人们所用的过程。

抽象包括对象的状态与行为,对应到类的属性与方法。

抽象出来的属性通过封装可以减少数据冗余,进展信息隐藏和保护数据完整性。

3.类与对象有什么关系?
参考答案要点:类是一种用户自定义的数据类型.对象是使用自定义的类名在程序中说明变量.或者说;具有类类型的变量即为对象.类是创立对象的样板;对象是类的实例。

4.判断以下类之间的关系,把它们分别列入A聚合B 继承C 关联D 都不是
这四类中。

1.大学–学院2.学生–课程3.学生–大一新生
4.汽车–车门5.货车–交通工具6.公共汽车–车站
7.工具条–按钮8.汽车发动机–汽车
9.员工–公司10.本科生–研究生
参考答案:
聚合:1 4 7 8
继承:5 10
关联:2 6 9
都不是:3
5.面向对象软件开发方法的目标
参考答案要点:封装性、易维护性、可扩展性、可重用性
6.简述数据类型的“强类型“。

参考答案要点:为所有变量指定数据类型称为“强类型〞。

使用强类型有以下优点:
•它为变量启用智能提示〔IntelliSense〕支持。

这允许您在输入代码时看到变量的属性和其他成员。

•它会运用编译器类型检查。

这将捕捉到因溢出等错误而在运行时失败的语句。

这也可以在不支持方法的对象上捕捉对方法的调用。

•使代码的执行速度更快。

7.简述C# 语言的优点
参考答案要点:
•完全面向对象的设计。

•强类型平安。

•很好地融合了高级语言的简明性和C++ 的强大功能。

•垃圾回收。

•类似于C 和C++ 的语法和关键字。

•使用委托取代函数指针,从而增强了类型平安和平安性
8.简述C#语言中的过程重载
参考答案要点:重载过程是指使用一样的名称和不同的参数列表在多个版本中定义某个过程。

重载的目的是定义过程的假设干个密切相关的版本,而不需要通过名称来区分它们,可通过改变参数列表到达此目的。

重载版本必须在以下至少一个方面不同于所有其他重载版本:
●参数的数量
●参数的顺序
●参数的数据类型
●类型参数的数量〔适用于泛型过程〕
●返回类型〔仅适用于转换运算符〕
9.简述在C# 语言中关键字new的用途并举例。

参考答案要点:在C# 中,new 关键字可用作运算符、修饰符或约束。

new 运算符:用于创立对象和调用构造函数。

new 修饰符:用于向基类成员隐藏继承成员。

new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。

10.关键字this的意义和用法?
参考答案要点:this 关键字引用类的当前实例,还可用作扩展方法的第一个参数的修饰符。

this 的常用用途:
限定被相似的名称隐藏的成员
将对象作为参数传递到其他方法
声明索引器
由于静态成员函数存在于类一级,并且不是对象的一局部,因此没有this 指针。

在静态方法中引用this 是错误的。

11.关键字base的意义和用法?
参考答案要点:tbase 关键字用于从派生类中访问基类的成员:
调用基类上已被其他方法重写的方法。

指定创立派生类实例时应调用的基类构造函数。

基类访问只能在构造函数、实例方法或实例属性访问器中进展。

从静态方法中使用base 关键字是错误的。

所访问的基类是类声明中指定的基类。

12.简述C# 程序的通用构造
参考答案要点:C# 程序可由一个或多个文件组成。

每个文件都可以包含零个或零个以上的命名空间。

一个命名空间除了可包含其他命名空间外,还可包含类、构造、接口、枚举、委托等类型。

在某一个类中必须而且只能有一个静态的Main方法作为程序的入口。

下面是一个程序的框架构造,它包含所有这些元素种类。

// A skeleton of a C# program
using System;
namespace YourNamespace
{
class YourClass
{
}
struct YourStruct
{
}
interface IYourInterface
{
}
delegate int YourDelegate();
enum YourEnum
{
}
namespace YourNestedNamespace
{
struct YourStruct
{
}
}
class YourMainClass
{
static void Main(string[] args)
{
//Your program starts here...
}
}
}
13.简述c#中类的成员
参考答案要点:类和构造具有表示其数据和行为的成员。

成员说明
字段字段是被视为类的一局部的对象的实例,通常用于保存类数据。

例如,日历类可能具有一个包含当前日期的字段。

属性属性是类中可以像类中的字段一样访问的方法。

属性可以为类字段提供保护,以防止字段在对象不知道的情况下被更改。

方法方法定义类可以执行的操作。

方法可以承受提供输入数据的参数,并且可以通过参数返回输出数据。

方法还可以不使用参数而直接返回值。

事件事件向其他对象提供有关发生的事情〔如单击按钮或成功完成某个方法〕的通知。

事件是使用委托定义和触发的。

有关更多信息,请参见事件和委托。

运算符运算符是对操作数执行运算的术语或符号,如+、*、< 等。

可以重新定义运算符,以便可以对自定义数据类型执行运算。

有关更多信息,请参见可重载运算符〔C# 编程指
南〕。

索引器使用索引器可以用类似于数组的方式为对象建立索引。

构造函数构造函数是在第一次创立对象时调用的方法。

它们通常用于初始化对象的数据。

析构函数析构函数是当对象即将从存中移除时由运行库执行引擎调用的方法。

它们通常用来确保任何必须释放的资源都得到适当的处理。

嵌套类型嵌套类型是在类或构造中声明的类型,通常用于描述仅由包含它们的类型所使用的对象。

14.简要表达类的构造函数和析构函数。

参考答案要点:构造函数:构造函数是一种特殊的方法主要用来在创立对象时初始化对象即为对象成员变量赋初始值,总与new运算符一起使用在创立对象的语句中特别的一个类可以有多个构造函数可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载
析构函数:析构函数用于类的实例销毁时完成的操作。

•不能在构造中定义析构函数。

只能对类使用析构函数。

•一个类只能有一个析构函数。

•无法继承或重载析构函数。

•无法调用析构函数。

它们是被自动调用的。

•析构函数既没有修饰符,也没有参数。

15.简述Windows窗体程序中如何使用事件?
参考答案要点:事件是可以通过代码响应或“处理〞的操作。

事件可由用户操作〔如单击鼠标或按某个键〕、程序代码或系统生成。

要在应用程序中使用事件,您必须提供一个事件处理程序〔事件处理方法或函数〕,该处理程序执行程序逻辑以响应事件并向事件源注册事件处理程序。

我们将该过程叫做事件连结〔事件绑定〕。

事件驱动的应用程序执行代码以响应事件。

每个窗体和控件都公开一组预定义事件,您可根据这些事件进展编程。

如果发生其中一个事件并且在相关联的事件处理程序中有代码,那么调用该代码。

对象引发的事件类型会发生变化,但对于大多数控件,很多类型是通用的。

例如,大多数对象都会处理Click 事件。

如果用户单击窗体,就会执行窗体的Click 事件处理程序的代码。

16.简述System 命名空间
参考答案要点:System 命名空间是.NET Framework 中根本类型的根命名空间。

此命名空间包括表示由所有应用程序使用的根本数据类型的类:Object〔继承层次构造的根〕、Byte、Char、Array、Int32、String 等。

System 命名空间还包含100 多个类,围从处理异常的类到
处理核心运行时概念的类,如应用程序域和垃圾回收器。

此外,System 命名空间还包含许多二级命名空间,是我们编写程序的根底。

17.简述List< T>类,并与ArrayList进展比拟。

参考答案要点:List< T>类是ArrayList类的泛型等效类。

该类使用大小可按需动态增加的数组实现IList< T> 泛型接口。

ArrayList是一种.NET Framework 提供得预定义集合类,用于数据存储和检索对象的专用容器类。

这些类一般支持堆栈、队列、列表和哈希表等常用数据构造。

在决定使用List< T>类还是使用ArrayList类〔两者具有类似的功能〕时,使用泛型集合会稍
微增加了些编码的复杂性,但好处是您可以创立一个比ArrayList更平安并且速度更快的列表。

List< T>类在大多数情况下执行得更好并且是类型平安的。

18.简述C#语言中类的属性成员。

参考答案要点:属性是类的一种成员:它们提供灵活的机制来读取、设置或计算私有字段的值。

可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器〞的特殊方法对字段进展封装,有助于提高方法的平安性和灵活性。

属性使类能够以一种公开的方法获取和设置值,同时隐藏实现或验证代码。

不实现set 方法的属性是只读的。

对于不需要任何自定义访问器代码的简单属性,可考虑选择使用自动实现的属性。

19.简述关键字static。

参考答案要点:使用static 修饰符声明属于类型本身而不是属于特定对象的静态成员。

stati c 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。

静态类和类成员用于创立无需创立类的实例就能够访问的数据和函数。

静态类成员可用于别离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。

当类中没有依赖对象标识的数据或行为时,就可以使用静态类。

工具类一般都是静态类。

即使没有创立类的实例,也可以调用该类中的静态方法、字段、属性或事件。

如果创立了该类的任何实例,不能使用实例来访问静态成员。

只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件。

静态成员通常用于表示不会随对象状态而变化的数据或计算;例如,数学库可能包含用于计算正弦和余弦的静态方法。

静态方法可以被重载,但不能被重写。

20.简述C#语言中ref和out的作用及区别。

参考答案要点:ref 关键字使参数按引用传递。

其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。

out 关键字会导致参数通过引用来传递。

这与ref 关键字类似,不同之处在于ref 要求变量必须在传递之前进展初始化。

尽管作为out 参数传递的变量不必在传递之前进展初始化,但需要调用方法中实例化以便在方法返回之前赋值。

尽管ref 和out 在运行时的处理方式不同,但在编译时的处理方式一样。

因此,如果一个方法采用ref 参数,而另一个方法采用out 参数,那么无法重载这两个方法。

例如,从编译的角度来看,以下代码中的两个方法是完全一样的。

21.简述.NET Framework,包括目的、组成及功能。

参考答案要点:.NET Framework的目的是便于开发商更容易地建立网络应用程序和Web
效劳,它的关键特色是提供了一个多语言组件开发和执行的环境。

从层次构造来看,.NET Framework又包括三个主要组成局部:通用语言运行环境(mon Language Runtime)、类库、应用模板——主要包括面向Web的网络应用程序模板〔Web Forms或Web Services〕和Windows应用程序模板〔Win Forms〕。

其用语言运行环境在组件运行时,负责管理存分配、启动和中止线程和进程、强化平安系数,同时还调整任何该组件涉及到的其他组件的附件配置。

在通用语言运行环境上是类库框架,它为开发人员提供了一套能够被任何现代编程语言调用的、统一的面向对象、异步、层次构造的可扩展类库,包括集合、输入/输出、字符串、图画、网络、线程、全球化、平安加密、数据库访问、调试相关效劳等类库。

在效劳框架之上是两种应用类型的模板,一类是传统的Windows 应用程序模板,另一类是基于的Web网络应用程序模板。

其中以一组控件和体系构造的方式提供了一个Web应用模型,由.NET框架提供的类库构建而成,通过它可以简化Web应用的实现过程。

22.简述C#中的垃圾回收技术
参考答案要点:.NET Framework 的垃圾回收器管理应用程序的存分配和释放。

每次您使用new 运算符创立对象时,运行库都从托管堆为该对象分配存。

只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。

但是,存不是无限大的。

最终,垃圾回收器必须执行回收以释放一些存。

对象在创立后,只有一个引用是指向对象的,随着代码的执行,垃圾回收器会跟踪对象的引用数量。

每增加一个引用,计数器加1。

当引用离开作用域以后,计数器就减少。

当引用计数器到达0时,就将该对象和对象所占用的存标记为回收。

当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的存。

23.简述C#的类有五种不同的限制修饰符
参考答案:
•public 可以被任意存取
•protected只可以被本类和其继承子类存取
•internal只可以被本程序集〔Assembly〕所有的类存取,程序集是C#语言中类被组合后的物理单位,其编译后的文件扩展名往往是“.DLL〞或“.EXE〞。

•protected internal唯一的一种组合限制修饰符,它只可以被本组合体所有的类或这些类的继承子类所存取。

•private只可以被本类所存取。

中常用的对象有哪些?分别描述一下。

相关文档
最新文档