测绘《Visual C# 程序设计》复习思考题解析

上传人:我** 文档编号:114631275 上传时间:2019-11-12 格式:DOC 页数:57 大小:968KB
返回 下载 相关 举报
测绘《Visual C# 程序设计》复习思考题解析_第1页
第1页 / 共57页
测绘《Visual C# 程序设计》复习思考题解析_第2页
第2页 / 共57页
测绘《Visual C# 程序设计》复习思考题解析_第3页
第3页 / 共57页
测绘《Visual C# 程序设计》复习思考题解析_第4页
第4页 / 共57页
测绘《Visual C# 程序设计》复习思考题解析_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《测绘《Visual C# 程序设计》复习思考题解析》由会员分享,可在线阅读,更多相关《测绘《Visual C# 程序设计》复习思考题解析(57页珍藏版)》请在金锄头文库上搜索。

1、一 选择题(35)(1) 下面是关于委托实例的描述,不正确的有哪些? (D)A委托(delegate)实例可以认为是这样的对象,它包含具有相同签名和返回值类型的有序方法列表,该方法的列表称为调用列表(invocation list);B当委托实例被调用时,它调用列表中的每一个方法;C由委托实例保存的方法可以来自任何类或结构,只要它们同时匹配委托的返回值和签名(包括ref和out修饰符);D调用列表中的方法可以是实例方法,不可以是静态方法。(2) 下面是关于委托类型的描述,不正确的有哪些? (D)A委托是类型,委托类型必须在被用来创建变量以及类型的实例之前声明;B委托类型声明和所有类型声明一样,

2、不需要在类的内部声明;C委托类型的声明看上去与方法的声明很相似,有返回类型和签名,返回类型和签名指定了委托接受的方法的形式;D委托类型的声明以delegate关键词开头,有方法主体。(3) 下面是关于创建委托对象的描述,不正确的有哪些? (B)A委托是引用类型,因此有引用和对象,在委托类型声明之后,可以声明变量并创建类型的对象;B可以使用带new运算符的对象创建表达式来创建委托对象,new运算符的操作数由委托类型名和一组方括号(包含作为调用列表中第一个成员的方法的名字)组成;C可以使用快捷语法来创建委托对象,它仅由方法说明符构成,之所以能使用快捷语法是因为在方法名称和其相应的委托类型之间有隐式

3、转换;D除了为委托分配内存,创建委托对象还会把第一个方法放入委托的调用列表。(4) 下面是关于委托对象操作的描述,不正确的有哪些? (B)A由于委托是引用类型,我们可以通过给它赋值来改变包含在委托变量中的引用,旧的委托对象会被垃圾回收器回收;B委托对象可以使用“-”运算符来“组合”,这个运算最终会创建一个新的委托对象,其调用列表是两个操作数的委托调用列表的副本的组合;C尽管术语组合委托(combining delegate)让我们觉得好像操作数委托对象被修改了,其实它们并没有被修改,委托对象是恒定的,委托对象被创建后不会再被改变;D我们可以通过使用+=运算符来为委托对象增加新的方法或另一个委托

4、对象;E我们还可以使用-=运算符从委托对象调用列表中移除方法或一个委托对象。(5) 下面是关于委托对象调用的描述,不正确的有哪些? (C)A可以像调用方法一样简单地调用委托对象;B用于调用委托对象的参数将会用于调用列表中的每一个方法(输出参数例外);C一个方法可以在调用列表中出现多次,当委托对象被调用时,这个方法只会被调用一次;D如果委托有返回值并且在调用列表中有一个以上的方法,调用列表中最后一个方法返回的值就是委托调用返回的值,调用列表中所有其他方法的返回值都会被忽略;E如果委托有引用参数,参数值会根据调用列表中的一个或多个方法的返回值而改变,在调用委托列表中的下一个方法时,参数的新值(不是

5、初始值)会传给下一个方法。(6) 下面是关于事件创建及使用的描述,不正确的有哪些? (B)A委托类型声明-事件和事件处理程序必须有共同的签名和返回类型,它们通过委托类型声明进行描述;B事件处理程序声明-这些在订阅者类中的方法(事件处理程序) 声明会在事件触发时被执行,它们需要有独立的方法,它们不可以是匿名方法或lambda表达式;C事件声明-事件发布者类中的声明,用来保存并调用事件处理程序;D事件注册-这段代码把事件处理程序添加到事件中;E触发事件的代码-发布者类中的这段代码,用来调用事件处理程序。(7) 下面是关于事件声明的描述,不正确的有哪些? (D)A发布者类必须提供事件和触发事件的代码

6、;B创建事件比较简单只需要委托类型和名字;C可以通过使用逗号分隔的列表在一个声明语句中声明一个以上的事件;D不可以使用static关键字让事件变成静态的。(8) 下面是关于事件的描述,不正确的有哪些? (C)A一个常见的误解是把事件认为是类型,然而它不是,事件是成员,我们不能使用对象创建表达式(new表达式)来创建它的对象;B事件必须声明在类或结构中,和其他成员一样;C能在一段可执行代码中声明事件;D事件成员被隐式自动初始化为null。(9) 下面是关于触发和订阅事件的描述,不正确的有哪些? (D)A在触发事件之前和null进行比较,从而查看是否包含任何事件处理程序,如果事件是null,则表示

7、没有;B触发事件使用事件名称,后面跟的参数列表包含在圆括号中,参数列表必须匹配事件的委托类型;C使用+=运算符来为事件增加事件处理程序;D事件处理程序可以是实例方法、静态方法,但不能是匿名方法和lambda表达式。(10) 下面是关于接口的描述,不正确的有哪些? (C)A接口是表示一组函数成员而不实现成员的引用类型,其他类型类和结构可以实现接口;B类或结构要实现接口必须在基类列表后面列出接口名称,必须为接口的每一个成员提供实现;C接口声明可以包含数据成员;D接口声明只能包含方法、属性、事件和索引等成员。 (11) 下面是关于接口的描述,不正确的有哪些? (D)A接口成员的声明不能包含任何实现代

8、码,而在每一个成员声明的主体后必须使用分号;B和类以及结构一样,接口声明还可以分隔成分部接口声明;C接口声明可以有任何的访问修饰符public、protected、internal或private;D接口的成员是隐式public的,允许有任何访问修饰符,包括public。(12) 下面是关于接口的描述,不正确的有哪些? (A)A只有类、数组和结构才能实现接口;B如果类实现了接口,它必须实现接口的所有成员;C如果类有基类又并需要实现接口,那么基类列表中的基类名称必须放在任何接口名称之前;D接口不仅仅是类或结构要实现的成员列表。它是一个引用类型。(13) 下面是关于接口的描述,不正确的有哪些? (

9、B)A类或结构可以实现任意数量的接口;B所有实现的接口必须列在基类列表中并以分号分隔(如果有基类名称,则在其之后);C如果一个类实现了多个接口,其中有一些接口有相同签名和返回类型的成员,类可以实现单个成员来满足所有包含重复成员的接口;D接口是引用类型,并且可以通过强制转换对象引用为接口类型来获取一个指向接口的引用,如果类实现了多个接口,我们可以获取每一个的独立接口类型的引用。(14) 下面是关于接口的描述,不正确的有哪些? (D)A实现接口的类可以把从它的基类继承的成员作为接口成员的实现;B如果有显式接口成员实现,类级别的实现是允许的,但不是必须的;C显式接口成员实现只可以通过指向接口的引用来

10、访问;D其他的类成员都可以直接访问显式接口成员实现。(15) 下面是关于接口的描述,不正确的有哪些? (C)A由于其他类不能直接访问显式接口成员实现,派生类的成员也不能直接访问它们,它们必须总是通过接口的引用来访问;B要指定某个接口继承其他的接口,应在接口声明中把基接口以逗号分隔的列表形式放在接口名称的冒号之后;C列表中的接口本身不可以有被继承的接口;D接口包含它声明的所有成员和所有基接口的成员。(16) 下面是关于Main方法的描述,不正确的有哪些? (A)A static void Main B static void Main(string args) C static int Main

11、() D static int Main(string args) (17) 下面是关于Main方法的描述,不正确的有哪些? (B)A Main必须声明为static;B Main可以被声明为类、枚举或结构的成员;C 如果Main被声明为private,其他程序集就不能访问它,只有执行环境才能启动程序;D 如果Main被声明为public,其他程序集和执行环境都可以调用它。(18) 下面是关于泛型的描述,不正确的有哪些? (C)A泛型允许我们声明类型参数化的代码,我们可以用不同的类型进行实例化;B我们可以用“类型占位符”来写代码,然后在创建类的实例时提供真实的类型;C类型不是对象而是对象的模板

12、,同样地,泛型类型也不是对象,而是对象的模板;D C#提供了5种泛型:类、结构、接口、委托和方法,注意,前面4个是类型,而方法是成员。(19) 下面是关于泛型类声明的描述,不正确的有哪些? (B)A在类名之后放置一组尖括号;B在尖括号中用句号分隔的占位符字符串来表示希望提供的类型,这被叫做类型参数(type parameter);C在泛型类声明的主体中使用类型参数来表示应该被替代的类型;D在泛型类型声明中没有特殊的关键词或标志,尖括号中的类型参数列表是将泛型类声明与普通类声明区分开的标志。(20) 下面是关于构造类的描述,不正确的有哪些? (B)A我们不能直接从泛型类型创建类对象,首先,我们需

13、要使用真实类型来替代占位符(类型参数)来创建构造类,然后从构造类创建一个真实类型对象;B要从泛型类构建类类型,列出类名字并在方括号中提供真实类型来替代类型参数,要替代类型参数的真实类型叫做类型实参(type argument);C编译器接受了类型实参并且替换泛型类主体中的相应类型参数,产生了构造类型;D可以从同一个泛型类型构建出很多不同的类型;每一个都是独立的类型,就好像它们都是独立的非泛型类型声明一样。(21) 下面是关于类型参数约束的描述,不正确的有哪些? (C)A要让泛型变得更有用,我们需要提供额外的信息让编译器知道参数可以接受哪些类型,这些额外的信息叫做约束(constrain);B只

14、有符合约束的实参才能用于类型参数;C约束使用while子句列出;D每一个有约束的类型参数有自己的where子句,如果形参有多个约束,它们在where子句中使用逗号分隔。(22) 下面是关于类型参数约束的where子句的描述,不正确的有哪些? (B)A它们在类型参数列表的关闭尖括号之后列出;B它们使用逗号分隔C它们可以以任何次序列出;D where是上下文关键词,所以可以在其他上下文中使用。(23) 下面是关于类型参数约束的描述,不正确的有哪些? (E)A 类名约束-只有这个类型的类或从它继承的类才能用作类型实参;B class约束-任何引用类型,包括类、数组、委托和接口都可以用作实参;C st

15、ruct约束-任何值类型都可以被用作类型实参;D 接口名约束-只有这个接口或实现这个接口的类型才能用作实参;E new()约束-任何带有公共构造函数的类型都可以用作实参,这叫做构造函数约束。(24) 下面是关于泛型类型的描述,不正确的有哪些? (D)A与泛型类相似,泛型结构可以有类型参数和约束;B泛型结构的规则和条件与泛型类是一样的;C泛型接口允许我们编写参数和接口成员返回类型是类型参数的接口;D泛型接口的声明和非泛型接口的声明差不多,但是需要在接口名称之后的方括号中提供有类型参数。(25) 下面是关于泛型接口的描述,不正确的有哪些? (B)A类型参数不同的泛型接口是不同的接口;B不可以在非泛型类型中实现泛型接口;C实现泛型类型接口时,所有可能的类型实参组合必须不会在类型中产生两个重复的接口,泛型接口的实现必须唯一;D泛型接口的名字不会和非泛型冲突。(26) 下面是关于泛型委托和泛型方法的描述,不正确的有哪些? (C)A要声明泛型委托,在委托名称后、委托参数列表之前的尖括号中放类型参数列表;B泛型方法中类型参数的范围包

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号