C#期末复习资料.pdf_第1页
C#期末复习资料.pdf_第2页
C#期末复习资料.pdf_第3页
C#期末复习资料.pdf_第4页
C#期末复习资料.pdf_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

第一章第一章 1. C/S 结构模式与结构模式与 B/S 结构模式的主要区别是什么结构模式的主要区别是什么? 【解答】 首先,在系统的性能方面。只要拥有可上网的浏览器,就可以使用 B/S 系统。不过, B/S 结构的客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作要由服务器承 担,这就对服务器提出了很高的要求,无形中增加了用户在这一方面的投入。采用 C/S 结 构时,客户端和服务器都承担部分工作,有效利用了客户端和服务器端的资源,使用户不必 在硬件上有更多的投入。另外,浏览器页面不便于修改,这为用户定制自己的文件时带来了 不便,比如用户想自定义一个报表,用 B/S 结构的系统就比较难完成。 其次,在系统的开发方面,C/S 结构的开发对开发者提出了较高的要求,整个开发过程 比较复杂。与 B/S 结构相比,C/S 技术的历史更为“悠久”,从技术成熟度和开发人员普遍掌 握的水平来看更为成熟。 第三,系统升级方面。C/S 结构中若有某一模块发生改变,可能要关联到其它模块的变 动,使系统升级的成本较大;而 B/S 结构在开发、维护阶段几乎所有的工作都集中在服务器 端,只需更新服务器端的软件就可以了。如果系统升级比较频繁,那么 B/S 架构的产品就 具有维护工作量少的优势。 第四,安全性方面。在安全性上,B/S 结构则略显不足,毕竟现在网络安全系数不高, 只要拥有密码, 任何人都可以进入到用户的系统中;而 C/S 结构由于需要特定的客户端软件, 并且一般来说都要对客户端加密, 甚至可以限定只有某一台计算机可以使用这个客户端, 因 而对安全性有更多的保障。 2. 可以用可以用 C#编写哪些类型的应用程序编写哪些类型的应用程序? 【解答】 1) 控制台应用程序。 2) Windows 应用程序。 3) 水晶报表应用程序。 4) ASP.NET Web 应用程序。 5) ASP.NET Web 服务应用程序。 6) ASP.NET 水晶报表 Web 应用程序。 7) 智能设备应用程序。 3. 什么是命名空间什么是命名空间?命名空间和类库的关系是什么命名空间和类库的关系是什么? 【解答】 1) 名称空间是对类的一种逻辑上的分组,即将类按照某种关系或联系划分到不同的名 称空间下。 2) 名称空间又可以包含其它的名称空间, 例如 System.Windows.Forms, 是指 System 名称空间下有 Windows 名称空间,Windows 名称空间下有 Forms 名称空间。 3) 所有类库都在规定的名称空间下。 第二章 1. C#支持的数据类型有那些支持的数据类型有那些?与与 C+相比有哪些特点相比有哪些特点? 【解答】 C#支持的数据类型有: (1) 值类型 包括:简单类型、结构类型、枚举类型。其中,简单类型又分为:整型、布尔型、字符 型、浮点型、小数型。 (2) 引用类型 包括:对象类型、类类型、接口、元数据、字符串类型、数组。 与 C+相比,C#的主要特点有: 1) C#语言自 C/C+演变而来。但是,它是完全按照面向对象的思想来设计的,并保证 了类型的安全性。 2) C#简化了 C+在类、名称空间、方法重载和异常处理等方面的使用。摒弃了 C+的 复杂性,使它更易用、更少出错。 3) C#减少了 C+的一些特性,不再有宏、多重继承。特别对企业开发者来说,上述功 能只会产生更多的麻烦而不是效益。 4) C#采用严格的类型安全、版本控制、垃圾收集(garbage collect)等等。所有的这些功 能的目标都是瞄准了开发面向组件的软件开发。 5) C#中不再有“:”、“.”、和“-”操作符,仅使用单个操作符“.”。 6) C#使用统一的类型系统,摒弃了 C+多变的类型系统。 7) 在 C#中,不能在类的外部定义全局函数、变量或者是常量等。所有的东西都必须封 装在类中,包括实例成员或静态成员。从而使 C#代码更加易读且有助于减少潜在的命名冲 突。 8) 在 C#中,不能使用没有初始化的变量。从而避免了由于使用不经初始化的变量而导 致的计算结果错误。 2. C#语言中,值类型和引用类型有何不同语言中,值类型和引用类型有何不同? 【解答】 值类型和引用类型的区别在于, 值类型的变量直接存放实际的数据, 而引用类型的变量 存放的则是数据的地址,即对象的引用。 值类型变量直接把变量的值保存在堆栈中, 引用类型的变量把实际数据的地址保存在堆 栈中,而实际数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置 也不相同,堆一般用于存储可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的 数据,如整型类型的数据 int(每个 int 变量占用四个字节)。由数据存储的位置可以得知,当 把一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引用变量 赋给另一个引用变量, 则会在堆栈中保存对同一个堆位置的两个引用, 即在堆栈中保存的是 同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一 个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是 对这个变量在堆中的数据进行操作, 如果两个引用类型的变量引用同一个对象, 实际含义就 是它们在堆栈中保存的堆的地址相同, 因此对一个变量的操作就会影响到引用同一个对象的 另一个变量。 3. 结构和类的区别是什么结构和类的区别是什么? 【解答】 1) 结构是一个值类型,保存在栈上,而类是一个引用类型,保存在受管制的堆上。 2) 对结构中的数据进行操作比对类或对象中的数据进行操作速度要快。 3) 一般用结构存储多种类型的数据,当创建一个很多类或对象共用的小型对象时,使 用结构效率更高。 4. C#中的数组类型有何特点中的数组类型有何特点? 【解答】 1) 数组一般用于存储同一种类型的数据,包括 Object 类型。 2) 数组是一种引用类型,而不是值类型。 3) C#中除了可以有一维数组、多维数组外,还有交错型数组。 5. C#中不同整型之间进行转换的原则是什么中不同整型之间进行转换的原则是什么? 【解答】 在整型之间进行转换时, 小范围类型可以隐式转换为大范围类型, 但大范围类型转换为 小范围类型时需要使用显式转换。 6. 简述装箱和拆箱的过程。简述装箱和拆箱的过程。 【解答】 装箱是将值类型隐式地转换为 object 类型或者转换为由该值类型实现了的接口类型。 装箱一个数值会为其分配一个对象实例,并把该数值拷贝到新对象中。拆箱是显式地把 object 类型转换成值类型,或者把值类型实现了的接口类型转换成该值类型。 7. 下列写法哪些是错误的下列写法哪些是错误的?为什么为什么? 1) if (nMyValue1=5) i=1; 2) if(nMyValue2=1)i=1; 3) int myInt=1,2,3; foreach(int test in myInt) test+; Console.WriteLine(temp); 4) int myInt1=1,2,3; foreach(int test in myInt1) ConsoleWriteLine(test); 【解答】 1) 错误。if 中的条件表达式结果不是布尔型。 2) 正确。 3) 错误一:temp 没有定义。 错误二:在 foreach 块内,test 作为枚举成员是只读的,不能使用 test+修改其值。 4) 错误。Console 后应该是点,而不应该是大于号。 8. 错误和异常有什么区别,为什么要进行异常处理,用于异常处理的语句有哪些错误和异常有什么区别,为什么要进行异常处理,用于异常处理的语句有哪些? 【解答】 错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对 象。当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响 应的代码),以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对 象。 当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错 误的信息及发生的时间和位置)来响应该错误。导致出现错误和随后异常的因素包括用户错 误、资源失败和编程逻辑失败。这些错误与代码实现特定任务的方法有关,而与该任务的目 的无关。 如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保 证正常运行,所以必须要进行异常处理。 用于异常处理的语句有:try-catch 语句、try-catch-finally 语句、throw 语句。 第四章第四章 1. 与结构化编程方法相比,面向对象编程有哪些优点与结构化编程方法相比,面向对象编程有哪些优点? 【解答】 (1) 以过程为中心和对象为中心的比较 结构化编程方法是以过程为中心的, 当面对一个问题时, 该方法侧重于问题解决过程的 层次结构。面向对象的分析和设计方法侧重于对象。对象具有特定的行为和属性,行为和属 性决定了对象与其他对象的交互作用方式,以及对象本身的行为方式。 (2) 公开数据和隐藏数据的比较 结构化编程方法对数据和过程仅仅进行简单的包装, 这些数据和过程是公开的, 或者说 程序中的其他代码可以访问这些数据和过程。 面向对象的实现隐藏了特定的数据, 并且只把 对象的特定行为公开给用户。 实现这些特定行为的代码对用户来说是不可见的, 用户只能访 问这些公开的行为。 (3) 单一单元和标准单元的比较 结构化编程方法是基于单一代码单元的。面向对象的编程方法允许对象是独立的。 (4) 一次性使用和可重用的比较 根据不同的实现, 结构化过程可能无法重用。 而面向对象的方法, 对象是一个模块单元。 具有完备的实体,因此可以具有高度的可重用性。 (5) 有序算法和无序算法的比较 结构化编程方法所开发的程序,其结构往往是线性的(或者说是自顶向下的)。而面向对 象的应用程序是一种基于消息或者事件驱动的程序类型。 每个对象都可以向其他对象发送消 息。Windows 操作系统就是这样的程序。 2. 简要回答下列问题。简要回答下列问题。 1) 举例说明 new 关键字可用于那些方面? 2) sealed 关键字的作用是什么?什么情况下需要使用 sealed 关键字? 3) 哪些关键字可以用于版本控制? 【解答】 1) 在 C#中, new 关键字可用作运算符或修饰符。 作为运算符用于在堆上创建对象和调 用构造函数。作为修饰符用于隐藏基类成员的继承成员。 2) 在类声明中使用 sealed 修饰符可防止其它类继承此类。在方法声明中使用 sealed 修饰符可防止扩充类重写此方法。 sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说 来, 由于密封类永远不会有任何派生类, 所以对密封类的实例的虚拟函数成员的调用可以转 换为非虚拟调用来处理。 3) override 关键字和 new 关键字均可用于版本控制。 在 C#中,默认情况下方法不是虚拟的。若要使方法成为虚拟方法,必须在基类的方法 声明中使用 virtual 修饰符。然后,派生类可以使用 override 关键字重写基类中的虚拟方法, 或使用 new 关键字隐藏基类中的虚拟方法。如果 override 关键字和 new 关键字均未指定, 编译器将发出警告,并且派生类中的方法将隐藏基类中的方法。 3. 简要回答抽象类和接口的主要区别。简要回答抽象类和接口的主要区别。 【解答】 抽象类和接口的一个主要差别是: 类可以实现多个接口, 但仅能从一个抽象类或任何其 它类型的类继承。 4. 使用委托的优点是什么?委托和事件有什么区别和联系? 【解答】 C#中的委托类似于 C 或 C+中的函数指针。使用委托使程序员可以将方法引用封装在 委托对象内。 然后可以将该委托对象传递给可调用所引用方法的代码, 而不必在编译时知道 将调用哪个方法。与 C 或 C+中的函数指针不同,委托是面向对象,而且是类型安全的。 C#中的“事件”是当对象发生某些事情时,类向该类的客户提供通知的一种方法。事件 最常见的用途是用于图形用户界面;通常,表示界面中的控件的类具有一些事件,当用户对 控件进行某些操作(如单击某个按钮)时,将通知这些事件。 使用委托来声明事件。委托对象封装一个方法,以便可以匿名调用该方法。事件是类允 许客户为其提供方法(事件发生时应调用这些方法)的委托的一种方法。事件发生时,将调用 其客户提供给它的委托。 第七章 1. 解释正则表达式解释正则表达式 +)“?(.+)各部分代表的含义。各部分代表的含义。 【解答】 此正则表达式用于匹配源文件中类似于搜狐新闻的字符串,各部分表示的含 义为: s+ 一个或多个空白字符 href 后接 HTML 定位点中的确切文本 s* 零个或多个空白字符 = 后接 HTML 定位点中的确切文本 s* 零个或多个空白字符 “? 零或无引号(转义的) ( 定义子字符串(定位点 URL)的组的起始点。 “ + 任意字符的一个或多个匹配项,括号中的字符除外。 ) 定义子字符串的第一组的结束 “? 零或无引号(转义的) 后接 HTML 定位点中的确切文本 (.+) 与任意字符(定位点文本)匹配的组。 结束 HTML 定位点的确切文本 2. 下面是检查输入字符串是否为有效的电子邮件的正则表达式:下面是检查输入字符串是否为有效的电子邮件的正则表达式: (w-+.)*?w-+w-+.(w-+.)*?w+$ 试解释各部分的含义。 【解答】 w-+ 一个或多个任意字符(a-z、A-Z、0-9 以及下划线)或短划线。在字符两边,确保地址 形式为 namedomainname。 . 一个转义点号。(不带反斜杠,一个点号与除换行符外的任意单个字符匹配。)以此确保 域名中至少有一个点号。 *? 对前面的表达式,非贪婪(non-greedy,即最小)地查找零次或多次匹配。 (w-+.)*? 以上三个表达式的组合: 对于包含一个或多个任意字符(a-z、A-Z、0-9 以及下划线)或短划线并且后面只跟一个 点号的表达式,非贪婪地查找零次或多次匹配。 3. 写出符合下列要求的正则表达式:写出符合下列要求的正则表达式: 1) 要求4-8个英文字母。 2) 不能包含字母,至少1个字符。 3) 至少3个数字。 4) 至少3个字符。 5) 至少3个英文字母。 6) 任意字符。 7) 3个字母或数字,如123,r3a 等。 8) 3个点。 9) 前至少有1个字符,后至少有3个字符。 10) 必须输入左括号。 【解答】 1) a-zA-Z4,8 2) a-zA-Z1, 3) 0-93, 4) 3, 5) a-zA-Z3, 6) .0, 7) A-Za-z0-93 8) .3 9) .1, .3, 10) ( 第九章 1. 简述三类二维坐标系统之间的相同点和区别。 【解答】 GDI+中的二维笛卡儿坐标系统分为三类:全局坐标系统、页面坐标系统和设备坐标系 统。 三类坐标系统的相同点:它们都有坐标原点以及向右和向下的 x 轴和 y 轴。 三类坐标系统的区别:全局坐标系统可以进行旋转、平移等操作。页面坐标系统与设备 坐标系统都是以设备的左上角为坐标原点,X 水平向右为正,Y 垂直向下为正。页面坐标系 统与设备坐标系统的差异在于 X,Y 的单位不同: 页面坐标系中的 X, Y 单位可以任意设定, 如英寸、毫米等;而设备坐标系中,只有一种单位,那就是点(point)或者像素(pixel)。页面坐 标系是不能更改的,它是一个参照标准,将全局坐标最终转换为设备坐标。 2. 简述创建 Graphics 类对象的三种方法。 【解答】 (1) 在窗体或控件的 Paint 事件中直接引用 Graphics 对象。在为窗体创建绘制代码时, 一般使用此方法获取对图像的引用。 (2) 从当前窗体获取对 Graphics 对象的引用。注意这种对象只有在处理当前 Windows 窗体消息的过程中有效。如果想在已经存在的窗体或控件中绘图,可以使用此种方法。 (3) 从继承自图像的任何对象创建 Graphics 对象。这个方法适用于需要更改已经存在 的 图像。 3. 同时创建多个矩形并用红黑相间的颜色进行填充。 【解答】 (1) 新建一个 Windows 应用程序,命名为“FillMultiRectangle”,调整窗体到适当大小。 更改“Form1.cs”为“FormFillMultiRectangle.cs”。 (2) 切换到代码方式,添加名称空间引用: using System.Drawing.Drawing2D; (3) 双击窗体的属性面板里事件页中的 Paint 事件, 添加 FormFillMultiRectangle_Paint 事件代码。 以下是引用片段: private void FormFillMultiRetangle_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; HatchBrushmybrush=newHatchBrush (HatchStyle.Cross,Color .Red,Color .Black); Rectangle rect= new Rectangle( 0, 0, 50, 100), new Rectangle(50,100, 100, 50), new Rectangle(150, 150, 50, 100), ; g.FillRectangles(mybrush, rect); g.Dispose(); 第十章 1. 组件与控件的主要区别是什么? 【解答】 组件是指可重复使用并且可以和其他对象进行交互的对象。组件(component)是靠类实 现的。控件是能够提供用户界面接口(UI)功能的组件。换句话说就是,控件是具有用户界面 功能的组件。 所有控件肯定都是组件,但并不是每个组件都一定是控件。 2. 控件有几种类型?各有什么特点? 【解答】 控件分为:复合、扩展和自定义三类。 复合控件是封装在公共容器内的 Windows 窗体控件的集合。 这种控件有时称为“用户控 件”,包含的控件称为“构成控件”。复合控件包含与每个包含的 Windows 窗体控件相关联的 所有固有功能, 允许有选择地公开和绑定它们的属性。 复合控件还提供了大量的默认键盘处 理功能,不需要任何额外的开发。复合控件从 UserControl 类派生而来。 扩展控件是从任何现有的 Windows 窗体控件或者自定义控件导出的继承控件。它保留 Windows 窗体控件的所有固有功能,然后通过添加自定义属性、方法或其他功能扩展此固 有功能。 可以使用此选项重写基控件的绘制逻辑, 然后更改该控件的外观以扩展其用户界面。 创建控件的另一种方法是通过从 Control 继承从头开始创建一个控件。Control 类提供 控件所需的所有基本功能(包括鼠标和键盘处理事件),但不提供控件特定的功能或图形界 面。若要实现自定义控件,必须编写该控件的 OnPaint 事件的代码,以及所需的任何功能 特定的代码。 第五章 1. 填空题填空题 1) 使控件是否可以对用户交互作出响应的属性是 Enabled 。 2) 控制控件是否显示的属性是 Visible 。 3) 若要在文本框中输入密码,常指定 PasswordChar 属性。 4) 若某复选框某时刻 CheckState 属性的值为 Indeterminate, 则其属性 Checked 的值 为 Unchecked 。 5) 使用 Panel 或 GroupBox 控件可以将多个 RadioButton 控件分为两个单选组。 6) 若不希望用户在 ComboBox 控件中编辑文本, 则应将属性 DropDownStyle 的属性 值设置为 DropDownList。 7) 用于设置 MenuStrip 控件中某菜单项快捷键的属性是 ShortcutKeys 。 8) 用于控制 ListView 控件中的各项显示方式的属性是 View 。 2. 判断题判断题 1) 控件就是属性、方法和事件的集合封装体。 ( 对 ) 2) TextBox 控件只能用于单行文本的输入。 ( 错 ) 3) 通过 RichTextBox 控件只能够与 RTF 文件进行交互操作。 ( 错 ) 4) CheckBox 控件的 Checked 属性与 CheckState 属性的值始终是相同的。 ( 错 ) 5) ToolTip 组件用于显示某指定控件的自定义提示信息的。 ( 对 ) 3. 区别区别 TextBox 控件、控件、MaskedTextBox 控件、控件、RichTextBox 控件的使用场合。控件的使用场合。 【解答】 TextBox 控件一般用于单段文本的编辑,可以设置为单行或多行的输入模式,也可以用 作密码的输入;MaskedTextBox 控件主要用于特定格式的单段文本编辑,在输入文本不符合 格式要求的将会触发其 MaskInputRejected 事件;RichTextBox 控件除了具有 TextBox 的一 般文本编辑功能外,还可以进行多段文本的高级编辑功能,如改变文本、段落的显示格式、 在文本中查找特定字符和字符串以及与 Rtf 文件的交互等。 4. 简要说明简要说明 CheckBox 控件和控件和 RadioButton 控件的区别。控件的区别。 【解答】 CheckBox 控件可为用户提供选择功能,常用的是二选一的选择,如“真/假”或“是/否”; 但该控件也可以通过属性的设置作三选一的选择。每一个 CheckBox 所代表的选择都是独 立的,若有多个 CheckBox 控件构成一组选项时,则可以多个同时被选中,相互之间不影 响,即复选。RadioButton 控件,它与 CheckBox 控件功能类似,也是用于接收用户的选择, 但它是以单项选择的形式出现, 即一组 RadioButton 按钮中只能有一个处于选中状态。 一旦 某一项被选中,则同组中其他 RadioButton 按钮的选中状态自动清除。 5. 设计一个设计一个 Windows 应用程序应用程序,窗体上有一个窗体上有一个 TextBox 控件控件、一个一个 Button 控件控件。要求要求, 每当用户单击按钮时每当用户单击按钮时, 文本框都会增加一行文字来反映单击的次数文本框都会增加一行文字来反映单击

温馨提示

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

评论

0/150

提交评论