高级C#习题-1-《高级C#开发技术》复习题习题21.选择题(1)关于线程和进程,下列说法哪些是正确的是()A.线程是操作系统分配处理器时间的基本单位;B.进程是操作系统分配处理器时间的基本单位;C.一个线程可以属于多个进程;D.一个进程可以有多个线程;(2)多线程C#程序中,类MyClass定义如下:classMyClass{ReaderWriterLockrwl=newReaderWriterLock();privateinti;publicvoidRead(){rwl.AcquireReaderLock(Timeout.Infinite);Interlocked.Increment(refi);Thread.Sleep(1000);rwl.ReleaseReaderLock();}publicvoidWrite(){rwl.AcquireWriterLock(Timeout.Infinite);Interlocked.Decrement(refi);Thread.Sleep(1000);rwl.ReleaseWriterLock();高级C#习题-2-}}请问,可以有多少个线程同时调用Read()并将i的值加1?()A.0个B.1个C.多个D.没有2.填空题(1)使用System.Diagnostics命名空间提供的进程类Process,用户可以查看和管理大部分Windows进程任务,包括启动和____停止_____进程,以及___检索______进程信息。启动一个外部程序可以使用Process类的_____start()______方法。(2)使用System.Threading命名空间提供的线程类Thread的___start()__________方法,可以启动多线程,要实现等待该线程结束的任务可以使用Thread的____join()_______方法。(3)线程同步可以采用以下四种方法:_lock()________、__monitor()_______、__interlocked()_______、____mutex()、readerwriterlock()____。3.简答题(5)线程同步有几种方法?每种方法之间有什么区别?五种,Lock()语句可以把某一段代码定义为互斥,这互斥的程序段在某一时间段只允许一个线程进行。其余线程必须等待这个线程执行完毕之后才执行。Monitor()类不仅可以完全取代lock语句,还可以设置锁定超时,避免死锁Interlocked()类提供了同步对多个线程共享带的变量访问的方法,是一类原子锁,如果该变量位于共享内存中,则不同进程的线程的线高级C#习题-3-程就可以使用该机制Mutex()类与monitor类似,它防止多个线程在某一时间同时执行某个代码块,mutex没有唤醒功能,与监视器不同的是mutex可以用来使跨进程的线程同步,因此可以在同一台机器甚至远程机器上的多个进程上使用同一个互斥体Readerwriterlock()实现多用户读/单用户写的同步访问机制,在进行资源访问时,如果在某一时刻资源并没有获取写的独占权,那么可以获得多个读的访问权,单个写入的独占权,如果某一时刻已经获取了写入的独占权,那么其他读取的访问权必须进行等待习题31.选择题(1)使用StringReader类和Stringwriter类的作用是()A.使用StringReader类读取文件中的字符串,而使用StringWriter类向文件中写入字符串。B.使用StringReader类读取顺序文件中的数据信息,而使用StringWriter类可以实现顺序文件的写操作。C.使用StringReader类可以从字符串的介质流中读取数据,而使用StringWriter类向以StringBuilder为存储介质的流中写入数据。D.使用StringReader类读取二进制文件中的数据信息,而使用StringWriter类可以实现二进制文件的写操作。(2)在使用FileStream打开一个文件时,通过使用FileMode枚举高级C#习题-4-类型的()成员,来指定操作系统打开一个现有文件并把文件读写指针定位在文件尾部。A.AppendB.Create(删除,新建)C.CreateNew(抛出异常)D.Truncate(清楚内容,指向文件开头,保留文件创建日期)(3)下列()选项Stream类不支持查找操作?A.FileStreamB.MemoryStreamC.BufferedStreamD.NetworkStream(4)整型数组MyIntArray的定义和初始化如下。为了将数组MyIntArray的所有元素值写入FileStream流,可创建()类的实例对该流进行写入。int[]MyIntArray=newint[400];for(inti=0;i400;i++)MyIntArray[i]=i;A.BinaryWriterB.StreamWriterC.TextWriterD.StringWriter(6)下列()选项不是XML文档所必须具备的要素。A.XML声明B.文档类型说明C.元素D.文档元素(7)下列()是XML的基本组成部分A.元素B.属性C.注释D.指针(8)以下按XML标记名的命名规则是()高级C#习题-5-A.标记名不能包含冒号B.标记名可以包含实体C.标记名必须以字母或下划线开始D.后继字符可以是任意字符(9)下列不符合元素类型声明的作用是()A.设置元素的类型B.设置元素出现的次数C.设置元素如何嵌套子元素D.设置文档的结构(10)下面不是XSL用到的节点是()A.文本节点B.根节点C.叶子节点D.注释节点2.填空题(1)一个XML元素由__开始标记____,___结束标记___以及位于开始标记、结束标记之间的__数据内容_____构成。(2)构成XML文档最基本的单位是______元素________。(3)不想XML处理器和XML应用程序对一段文本数据进行解释,需要使用___CDATA标记______标记对该段文本进行标记一个XML文档如果需要符合有效性的要求,则它必须___遵照一定类型的文本说明书_______________(4)文档类型定义(DTD)是一类用于__定义xml文档具体格式___________的文本,它规定XML文档的____格式_____、__内容______。高级C#习题-6-3.简答题(2)如何创建FileStream对象?最简单的构造函数仅仅带有两个参数,即文件名和FileMode枚举值。FileStreamaFile=newFileStream(filename,FileMode.Member);FileMode枚举有几个成员,规定了如何打开或创建文件。另一个常用的构造函数如下:FileStreamaFile=newFileStream(filename,FileMode.Member,FileAccess.Member);第三个参数是FileAccess枚举的一个成员,它指定了流的作用。File和FileInfo类都提供了OpenRead()和OpenWrite()方法,更易于创建FileStream对象。前者打开了只读访问的文件,后者只允许写入文件。这些都提供了快捷方式,因此不必以FileStream构造函数的参数形式提供前面所有的信息。习题51.简答题(1)什么是LINQ查询分析技术?引入了标准的、易于学习的查询和更新数据模式,将数据和语言联系在一起,使查询成为编程语言的一部分(2)LINQ技术的体系架构是什么?LINQtoobjects,(linqtodatasets,linqtosql,linqtoentities)(用于LINQ的ADO.NET),LINQtoXML(3)LINQ和ADO.NET相比较有什么特点?1.linq查询语法比较简单,容易书写,在创建查询表达式时VS2010集成开发环境还提供了智能感知2.由于查询表达式被嵌入到编程语言中,因此,编译器将检查表达式高级C#习题-7-的语法错误和查询数据的类型安全3.linq自身提供了强大的过滤,排序,数据分区,分组等处理数据的功能4.linq可以直接处理XML元素,并为内存中的XML文档提供强大的处理功能5.linq可以从容地处理多数据源和多数据格式的数据2.填空题(1)LINQ包含4种组件,其中______linqtosql______________组件提供查询基于关系数据库数据的一套机制;LinqtoDataSet组件的作用是___可以轻松地对dataset中的数据进行操作____________________;LinqtoObject组件可以查询_IEnumerable或IEnumerableT____________________集合;______linqtoxml__________组件可以查询或操作XML结构的数据,并提供修改文档对象模型的内存文档和支持Linq查询表达式功能,以及处理XML文档的全新的编程接口。(2)System.Linq命名空间提供支持使用语言集成查询LINQ进行查询的类和接口。________Enumerable_______类包含LINQ标准查询运算符,这些运算符对实现__IEnumerable(of(t))____________________的对象进行操作。Queryable类包含LINQ标准查询运算符,这些运算符对实现_____IQueryable(of(t))_______________的对象进行操作。习题71.选择题(1)下列不是图像的格式的是()A.BMPB.JPEGC.GIF高级C#习题-8-D.OCX(2)下列用于显示图像的方法是()A.DrawimageB.ShowimageC.DrawD.Paint(3)下列用于复制图像的方法是()A.CopyB.CloneC.CutD.Drawimage(4)下列能实现图像水平旋转的是()A.RorateB.CopyC.RotateFlip(RotateFlipType.Rotate180FlipY)D.bitmap.RotateFlip(RotateFlipType.Rotate90FlipNone);(5)下面给出的图像格式中不是GDI+所支持的是()A.BMPB.GIFC.JPEGD.以上格式都支持2.填空题(1)GDI是_____Graphicaldeviceinterface________的英文缩写。(2)GDI是____图形图像_______开发接口,它主要负责_____通过屏幕和打印输出_________有关信息,它是一组通过类实现的应用程序编程接口。(3)___System.Drawing____________命名空间提供了对GDI+基本图形功能的访问。(4)Graphics类提供将___图像图形____________绘制到显示设备的方法。大多数绘图工作都是调用Graphics实例的方法完成的。(5)在C#中的图像编程中,最常用的命名空间是____System.Drawing_________。(6)要使pictureBox中显示的图片刚好填满整个图片框,应把它的____SizeMode_________属性值设置为pictureBoxSizeMode.StretchImage。3.简答题(1)建立Graphics对象的方式有哪些?三种1.通过视窗中的paint事件的painteventargs直接引用视窗的graphics对象Privatevoidform_paint(objectsender,system.windows.forms.painteventargsp){graphicsdc=p.graphics;}2.使用窗体的creategraphics()方法创建graphics对象高级C#习题-9-Graphicsdc=this.creategraphics();3.通过图像对象创建一个graphics对象Graphics