C完整复习资料_第1页
C完整复习资料_第2页
C完整复习资料_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、选择题知识点1、 NET 'MSIL' 是独立于CPU 的指令集,它可以被高校地转换为特定于某种CPU 的代码2、在 Visual 窗口中,在 “类视图” 窗口中可以查看当前项目的类和类型。3、在 C#中,字符串如何定义,字符串的使用4、在非连接模式下处理数据内容的主要对象是“DATASET”。5、在 C#中,预处理器指令#region 和 #endregion 的作用是什么?C# 中的#region和 #endregion表示一块区域,这样在VisualStudio中可以将这块区域的代码折叠起来,便于查看。虽然Visual Studio也响应大括号的折叠,但大括号会引起作

2、用域的变化,而#region和 #endregion则不会。#region和 #endregion大小写敏感。#region和 #endregion可以嵌套。#region后面可以跟任意文字以对该区域进行说明。6、关于结构类型和类类型的区别和联系。c#中的结构体类型struct类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。下面的示例显示了一个简单的结构声明。public struct PostalAddress.结构与类共享几乎所有相同的语法,但结构比类受到的限制更多:尽管结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项。结构不能声明默认构造

3、函数(没有参数的构造函数)或析构函数。结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值 (参见默认值表) 来实现默认构造函数。 结构不能从类或其他结构继承。结构是值类型 - 如果从结构创建一个对象并将该对象赋给某个变量, 变量则包含结构的全部值。 复制包含结构的变量时, 将复制所有数据, 对新副本所做的任何修改都不会改变旧副本的数据。 由于结构不使用引用, 因此结构没有标识 - 具有相同数据的两个值类型实例是无法区分的。 C# 中的所有值类型本质上都继承自ValueType ,后者继承自Object。编译器可以在一个称为装箱的过程中

4、将值类型转换为引用类型。结构具有以下特点:结构是值类型 , 而类是引用类型向方法传递结构时. 结构是通过传值方式传递的, 不是作为引用方式传递.与类不同 , 结构的实例化可以不使用new运算符 .结构可以声明构造函数, 但他们必须带参数一个结构不能从另一个结构或类继承, 而且不能作为一个类的基。 所有结构都直接继承自 ,后者继承自 。结构可以实现接口。在结构中初始化实例字段是错误的。1) 结构是一个值类型,保存在栈上,而类是一个引用类型,保存在受管制的堆上。2) 对结构中的数据进行操作比对类或对象中的数据进行操作速度要快。3) 一般用结构存储多种类型的数据,当创建一个很多类或对象共用的小型对象

5、时,使用结构效率更高。7、在 Queue 类、 Stack 类、 Hash Table 类中,常用方式使用,HashTable 有什么特点?Queue(队列)类主要实现了一个FIFO ( First In First Out ,先进先出)的机制。元素在队列的尾部插入(入队操作) ,并从队列的头部移出(出队操作) 。在 Queue 中主要使用Enqueue、Dequeue、Peek 三个方法对队进行操作。 Enqueue 方法用于将对象添加到除并返回位于 Queue 开始处的对象; Peek 方法用于返回位于Queue 的结尾处; Dequeue 方法移 Queue 开始处的对象但不将其移除。S

6、tack(堆栈 )类主要实现了一个LIFO ( Last In First Out ,后进先出)的机制。元素从栈的顶部插入(入栈操作) ,也从堆的顶部移除(出栈操作)。在 Stack 中主要使用Push, Pop, Peek 三个方法对栈进行操作。 Push 方法用于将对象插入 Stack 的顶部; Pop 方法用于移除并返回位于 Stack 顶部的对象; Peek 方法用于返回位于 Stack 顶部的对象但不将其移除。Hashtable (哈希表)是一种键 /值对集合,这些键 /值对根据键的哈希代码进行组织。在一个 Hashtable 中插入一对 Key/Value 时,它自动将 Key 值

7、映射到 Value ,并允许获取与一个指定的Key 相关联的value 。在 Hashtable 中主要使用Add 、 Remove 两个方法对哈希表进行操作。Add方法用于将带有指定键和值的元素添加到Hashtable 中; Remove 方法用于从Hashtable 中移除带有指定键的元素。说明: Hashtable 不能包含重复的 key。如果调用 Add 方法来添加一个 keys 数组中已有的 key ,就会抛出异常。为了避免这种情况,可以使用 ContainsKey 方法来测试哈希表中是否包含一个特定的 Key。8、在哈希表中,对象所属的哈希桶的地址是由“为该对象设置的键值 ”决定的

8、。9、读取图形文件时,应使用"BinaryReader"类的对象10、在中,表示程序到数据的连接的对象是“connection 对象”。11、在 C#中设计类时,如何将一个可读可写的公有属性Name 修改为只读属性?将 Name 的 set 块删除12、在编写C#程序时,若需要一个数组中的所有元素进行处理,则使用“foreach ”循环体最好。13、 C#编译器将 C#程序编译成什么样的代码?(中间语言 )14、在使用FileStream 打开一个文件时,通过使用FileMode 枚举类型的“Append ”成员来制定操作系统打开一个现有文件并把文件读写指针定位在文件尾部。

9、15、什么是封装、继承、多态?封装就是把一些特征或功能组合到一个抽象的对象上。C#只支持单继承,即一个类只能继承一个父类多态就是父类定义的抽象方法, C#允许将子类赋值给父类, 然后在父类中通过调用抽象方法来实现子类具体功能。16、在,将用产生在DataSet 中的改动保存到数据源中,应使用哪个方法?DataAdapter 对象的 Update 方法17、掌握数组的使用18、掌握字符串的使用二、简答1、个控制台程序相比,Windows 应用程序编程的特点有哪些,试简述之。从表面上来看: 控制台程序运行时是在 DOS环境下,或者模拟 dos 环境运行的程序,运行时一般会启动一个提示符窗口。 而应

10、用程序是 Windows环境下的窗口程序。运行时一般会启动一个窗口画面。 (例外,病毒木马,就不显示窗口,这决定于是否创建了窗口,或者是否让窗口显示) 但是,实质上, windows 应用程序和控制台应用程序的真正区别是, PE 文件的结构不同,这点不需要我们去关心,编译器会根据你的选择去构建生成的 exe 文件的 PE结构。 如何告之编译器你的选择?在编译器进行连接的时候,给它一个连接参数: subsystem:windows 或者 subsystem:console 来告诉它。 对于大多数编程工具来说一般在“工程 -> 设置 -> 连接”这个表单里面就可以看到这个参数。 但是通

11、常在我们要创建一个新的工程的时候,编译器会让我们事先选择好是创建windows应用程序还是创建控制台应用程序。这个参数的设置就不用我们操心了。补充(你可以不看,有点复杂了) :事实上,控制台程序依然还有区别,那就是, 16 位的可以在 DOS操作系统环境中运行的 DOS程序(也可以在 window 运行通常 windows 会模拟一个 dos 环境,这时你会程序窗口与平时的提示符窗口明显不一样),和 32 位通常只能在 windows 操作系统中运行的程序。通常 32 位控制台在DOS下运行,它的 PE结构中会给予 DOS环境下运行的一个入口点 (DOS文件头),这个入口点只有“一行”代码:

12、"This program cannot be run in DOSmode" 而在 32 位系统下,操作系统将将查看 PE文件头里面的 subsystem 字段来获得程序将以什么方式运行( windoes 或者 console) 这个字段里面指示了子系统( CUI 对应控制台, GUI 对应普通程序, 驱动程序等没有子系统) 32 位的控制台程序当然可以调用 PAI 函数,而 16 位的 DOS程序则不可以调用 API 函数。2、 C#支持的数据类型有哪些?值类型和引用类型有何不同?与C/C+ 相比有什么不同C#数据类型分为值类型和引用类型。(1) 值类型包括:简单类型、

13、结构类型、枚举类型。其中,简单类型又分为:整型、布尔型、字符型、浮点型、小数型。(2) 引用类型包括:对象类型、类类型、接口、元数据、字符串类型、数组。值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。 当把一个值变量赋给另一个值变量时,会在堆栈( stack )中保存两个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆(heap)位置的两个引用。进行数据操作时, 对于值类型, 由于每个变量都有自己的值,因此对一个变量的操作不会影响到其他变量; 对于引用类型的变量, 对一个变量的数据进行操作就是对这个变量

14、在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。与 C+相比, C#的主要特点有:1) C# 语言自 C/C+演变而来。但是,它是完全按照面向对象的思想来设计的,并保证了类型的安全性。2) C# 简化了 C+在类、名称空间、方法重载和异常处理等方面的使用。摒弃了 C+的复杂性,使它更易用、更少出错。3) C# 减少了 C+的一些特性,不再有宏、多重继承。特别对企业开发者来说,上述功能只会产生更多的麻烦而不是效益。4) C# 采用严格的类型安全、版本控制、垃圾收集(garbage c

15、ollect)等等。所有的这些功能的目标都是瞄准了开发面向组件的软件开发。5) C# 中不再有“ : ”、“ . ”、和“ -> ”操作符,仅使用单个操作符“ . ”。6) C# 使用统一的类型系统,摒弃了 C+多变的类型系统。7) 在 C#中,不能在类的外部定义全局函数、变量或者是常量等。所有的东西都必须封装在类中,包括实例成员或静态成员。从而使 C#代码更加易读且有助于减少潜在的命名冲突。8) 在 C#中,不能使用没有初始化的变量。从而避免了由于使用不经初始化的变量而导致的计算结果错误。3、 C#语言中的数组类型有何特点?分为几类?1) 数组一般用于存储同一种类型的数据,包括 Obj

16、ect 类型。2) 数组是一种引用类型,而不是值类型。3)C#中除了可以有一维数组、多维数组外,还有交错型数组。4、 Directory 类提供了哪些目录管理的功能,它们是通过哪些方法来实现的?Directory 类为我们提供了对磁盘和目录进行管理的功能,如复制、移动、重命名、创建和删除目录, 获取和设置与目录的创建、 访问及写入操作相关的时间信息。如:CreateDirectory 方法用于创建指定路径中的所有目录; Delete 方法用于删除指定的目录; Move方法能够重命名或移动目录; Exists 方法用于确定给定路径是否引用磁盘上的现有目录; 方法用于获取应用程序的当前工作目录;

17、方法用于返回指定目录中的文件的名称等。5、 C#如何使用try-catch-finally处理可能的代码异常?6、简述装箱和拆箱的过程。装箱是将值类型隐式地转换为object 类型或者转换为由该值类型实现了的接口类型。装箱一个数值会为其分配一个对象实例, 并把该数值拷贝到新对象中。 拆箱是显式地把 object 类型转换成值类型,或者把值类型实现了的接口类型转换成该值类型。7、错误和异常有什么区别,为什么要进行异常处理,用于异常处理的语句有哪些?错误是指在执行代码过程中发生的事件, 它中断或干扰代码的正常流程并创建异常对象。当错误中断流程时, 该程序将尝试寻找异常处理程序 (一段告诉程序如何对

18、错误做出响应的代码) ,以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对象。当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错误的信息及发生的时间和位置) 来响应该错误。 导致出现错误和随后异常的因素包括用户错误、 资源失败和编程逻辑失败。 这些错误与代码实现特定任务的方法有关,而与该任务的目的无关。如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。用于异常处理的语句有: try-catch 语句、 try-catch-finally 语句、 throw 语句。8、简述提供了两种读取数

19、据库的方式。提供了两种读取数据库的方式。第一种是利用 Connetction 、 Command和 DataReader 对象,这种方式只能读取数据库,不能修改记录。如果只是想查询记录的话, 这种方式的效率更高些。第二种是利用 Connection 、Command、DataAdaPter 和 Dataset 对象,这种方式更灵活,可以对数据库进行各种操作。三、程序1、写出下列程序的功能Static viod f2ref doublea,int nint i;double sum = 0;for (i=0;i<n;i+)sum+=ai;Sum/=n;for(ai;i<n;i+)if

20、 ( ai>=sum )(ai+" ");();2、Using System;Class Demoint a;Public Demo( int n )a = 0;Public int M()If(a>0)return a-;ElseReturn ();Class Teststatic voidMain()Demox=new Demo(0);Int k=();While (k>0)( ” 0t “ ,k*k);K=();结果: 8164493625169414.、请设计一段程序实现对列的入列和出列操作,最后输出对列中的元素,代码程序using System;

21、usingusing ;using ;namespace ConsoleApplication4class Programstatic void Main(string args)Queue queue1 = new Queue();("CSharp");(1);(new int 1, 2, 3 );object outItem = new object();while > 0)outItem = ();("0", outItem);();5、请设计一段程序对列的入栈和出栈操作,最后输出栈中的元素,代码如下using System;usingusi

22、ng ;using ;namespace ConsoleApplication4class Programstatic void Main(string args)Stack stack1=new Stack();("Csharp");(1);(newint 1,2,3);Object outItem = new object();While >0)outItem=();("0",outItem);6、试编写一段程序,把数值0,1., 10 以二进制的形式写入文件。7、使用 FileStream 创建文本文件,并文件中写入任一字符中。Static

23、void Main (string args)byte charm_bDataWrite = new byte 100;m_cDataWrite = new char 100;tryFileStreamm_FileStream = new FileStream ;m_cDtaWrite = " My First File Operation".ToCharArray(); Encoder m_Enc = (m_cDataWrite,0,m_bDataWrite,0,true);(0,;(m_bDataWrite,0,;catch(IOExceptionex)("T

24、here is an IOException");();Return;("Write to File();return;Succed!");四、综合题知识点1、简述用 ADO,NET 开发数据库应用程序的基本方法和步骤。编写控制台程序,从 SQLSewver 数据库 Student 表中,读取出所有姓”李“学员的姓名。(假设数据库连接已建立为 connection,DBCommand 已创建为 SqlCommand , Student 表”姓名“列名为 StudentName)。2、简述用开发数据库应用程序的基本方法和步骤。设现有一SQL Server数据库服务器中Student 数据库,请设计某类中一个方法实现数据库连接,写出主要程序代码使用开发数据库应用程序一般可分为以下几个步骤。(1)根据使用的数据源,确定使用哪种.NET Framework 数据提供程序。(2)建立与数据源的连接,需要使用Connection 对象。(3)执行对数据源的操作命令,通常使用Command 对象。(4)使用数据集对获得的数据进行操作,需要使用DataReader、DataSet等对象。(5)显示数据,需要使用数据控件。数据库连接using System;usingusin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论