C#考试简答题总结 (2)
- 格式:docx
- 大小:33.02 KB
- 文档页数:8
1. C#语言特点 C# 是一种精确、简单、类型安全、面向对象的语言,开发人员可以使用它来构建在.NET Framework上运行的各种安全、可靠的应用程序,包括控制台应用程序、Windows应用程序、Web应用程序等。 C#作为一款面向对象的语言,支持封装、继承和多态。所有的变量和方法都封装在类定义中。C#源文件可以定义任意数量的类、结构、接口和事件。 具体优点如下: 1.语法简洁 抛弃了C/C++指针;统一了对结构、类及其成员的引用,均使用点号分隔;没有全局函数和全局变量等。 2.完全面向对象设计 C#使用Object(根类型)来统一所有数据类型,通过装箱和拆箱实现类型转换;只允许单继承 3.与Web紧密结合 html、http、xml等紧密结合 4.完善的安全性和错误处理 智能感知技术;异常类;类型安全机制(CLR垃圾回收、类型安全检查、内部代码信任机制等) 5.良好的可扩展性 跨语言、跨平台、跨互联网互相调用;自定义数据类型来扩展元数据
2. C#程序特点 1. 必须借助Net Framework类库实现 2. 必须定义类 一个程序至少包含一个自定义类,使用class关键字定义。 3. 类的代码主要由方法组成 控制台应用程序或Win应用程序,必须包含main方法,且从main方法第一条语句开始运行。还可以有其他方法如:Load、Click方法等。 4. C#程序中的方法由方法的头部、方法体组成。 方法头:方法的第一行,包括返回值、方法名、形参名及形参类型的说明。 如:void Page_Load(object sender, EventArgs e) 方法体:用一对大括号{}括起来,包含声明语句和执行语句。 5. C#程序的语句 每条语句以分号结尾。 6. C#程序的输入与输出操作 C#本身没有输入输出语句。 控制台应用程序借助Console类的方法来完成 Win和Web应用程序借助控件来完成 7. C#程序的注释 使用“//”或“/*……*/”添加注释信息 注释的目的是为了方便阅读或修改程序,运行时将忽略 注释可以添加在程序的任何位置 要养成良好的添加注释的习惯,增强程序的可读性 C#控制台应用程序 (1)C#程序必须引入命名空间:using System; System命名空间是.Net最基本的命名空间,缺少System命名空间,源程序代码将无法编译。 (2) 使用“//”或“/*……*/”来添加代码注释。 注意,程序的注释在编译将被自动忽略。 (3) 使用namespace定义命名空间。 (4) 定义类:使用class标识类的定义。 (5) C#控制台应用程序必须包含一个Main方法。 默认的格式为:static void Main(string[] args) (6) 编写程序语句 :一个C#程序通常包含若干条语句,每一个语句必须以英文字符分号“;”结尾。 Win 32应用程序 (1) 设计 Windows窗体应用程序时,必须引用命名空间System.Windows.Forms和System.Drawing。 (2) Windows应用程序也是从Main方法开始执行的。VS 2010会在program.cs文件中自动生成维护Main方法,故不需要在Main方法中添加任何代码。 (3) Windows应用程序采用事件驱动编程思想,只有当事件发生时系统才能可能调用相应的事件方法。例如,窗体的Load事件对应事件方法HelloFrm_Load。 (4) 事件方法根据需要编程。 WEB应用程序 (1)一个Web应用程序必须引用命名空间System.Web、System.Web.UI、System.Web.UI.WebControls。 (2)C# Web应用程序不需要Main方法。 (3)C# Web应用程序也采用事件驱动编程思想,只有当事件发生时系统才执行事件方法。例如,Web窗体的Load事件对应Page_Load事件方法。 (4)根据需要编写事件方法。
3.枚举型与结构型的区别
变量名 每个变量都必须有一个名字,即变量名。 变量命名应遵循标识符的命名规则,如必须以字母、下划线(_)和汉字打头,可包含字母、数字、下划线和汉字,不能包含空格,不能使用C#保留字等。 C#的值类型主要包括3种:简单类型、枚举类型和结构类型。 ① 枚举元素的数据值是确定的,一旦声明就不能在程序的运行过程中更改; ② 枚举元素的个数是有限的,同样一旦声明就不能在程序的运行过程中增减; ③ 默认情况下,枚举元素的值是一个整数,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1; ④ 如果需要改变默认的规则,则重写枚举元素的值即可
枚举型:各个枚举元素的数据类型是相同的,枚举数只能代表某一个枚举元素的值。 结构型:实质上是若干个数据成员与数据操作的组合,一个结构型数据的值是由各个成员的值组合而成的,结构型的各个数据成员的数据类型可以是不同的。
3. 数据类型转换 显式转换 显示转换就是需要明确要求编译器完成的转换,也称强制类型转换,在转换时,需要用户明确指定转换的类型,强制类型转换的一般形式为: (类型说明符) (待转换的数据) 其含义是:把特转换的数据的类型强制转换成类型说明符所表示的类型。 (float) a; //把a转换为float类型 (int)(x+y); //把x+y的结果转换为int类型 显示转换有可能造成精度损失。如下述转换将丢失小数部分。 double d=12.5; int a=(int)d; 【注意】在使用强制转换时应注意以下问题: 待转换的数据不是单个变量时,类型说明符和特转换的数据都必须加圆括号。(int)(x+y) 无论是强制转换或是隐式转换,都只是为了本次运算的需要而对变量进行的临时性转换,而不改变数据说明时对该变量定义的类型。 C#允许用System.Convert类提供的类型转换方法来转换数据类型,常用的转换方法有:ToBoolean 、ToByte、ToChar、ToInt32、ToSingle、ToString、ToDateTime等,分别表示将指定数据转换为布尔值、字节数、字符编码、整型数、单精度数、字符串、日期等 当被转换的目标为字符串时,C#内置的简单类型均自带Parse方法,调用该方法可自动解析字符串,并转换为制定的数据类型。 将变量转换为字符串时,C#数据类型均带有ToString方法,可转换为对应的字符串。
4. break与continue break语句既可用于switch语句,也可用于循环语句。 break语句用于switch语句时,表示跳转出switch语句; 用于循环语句时表示提前终止循环。 在循环结构中,break语句可与if语句配合使用,通常先用if语句判断条件是否成立,如果成立,则用break来终止循环,跳转出循环结构。 continue语句只能用于循环结构, continue语句将忽略continue后面的语句,直接进入本循环结构的下一次循环操作。 在while和do while循环结构中,continue立即转去检测循环控制表达式,以判定是否继续进行循环, 在for语句中,则立即转向计算表达式3,以改变循环控制变量,再判定表达式2,以确定是否继续循环。
5. 访问修饰符 6. 类与对象 类(Class)表示具有相同属性和行为的一组对象的集合,为该类的所有对象提供统一的抽象描述。其中,相同属性是指定义的形式相同,而属性值不一定相同。如右图。 类是对相似对象的抽象,而对象是该类的一个特例,类与对象的关系是抽象与具体的关系。
7. 数据抽象与过程抽象 过程抽象是指忽略任务具体完成的过程,而只精确描述该任务所要完成的功能,即指从输人值集到输出值的映射,其定义域和值域均由数据抽象刻划。数据抽象是用数据集上的运算来表示数据,体现了表示上的抽象,即利用抽象的数学结构,如集合、关系、函数、序列和多重集合等,进行功能性描述,而不关心这些抽象数学结构在计算机中是如何具体表示和实现的。
9.属性访问器 属性访问器,包括 get 访问器和 set 访问器,分别用于字段的读写操作,其设计目的主要是为了实现面向对象中的封装思想。
10. 封装与信息隐藏 .封装和信息隐藏 封装(encapsulation)有两个方面的含义: 一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰。 二是将对象中某些部份对外隐藏,即隐藏其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐藏的做法称为信息隐藏(information hiding)。 信息隐藏还有利于数据安全,防止无关的人了解和修改数据。 例如,一台电视机就是一个封装体。从设计者的角度来讲,不仅需要考虑内部的各种元器件,还要考虑主机板、显像管等元器件的连接与组装;从使用者的角度来讲,只关心其型号、颜色、重量等属性,只关心电源开关按钮、音量开关、调频按钮、视频接口等使用是否方便,而不关心其内部构造。 封装的目的在于将对象的使用者与设计者分开,使用者不必了解对象行为的具体实现,只需要用设计者提供的消息接口来访问该对象。
11.装箱与拆箱 从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 11. 继承与多态 如果在软件开发中已建立了一个名为A的类,又想建立一个名为B的类,而后者与前者内容基本相同,只是在前者基础上增加一些新的属性和行为,显然不必再从头设计一个新类,只需在A类的基础上增加一些新的内容即可,而B类的对象拥有A类的全部属性与方法,称作B类对A类的继承,在B类中不必重新定义已在A类中定义过的属性和方法,这种特性在面向对象中称作对象的继承性。 继承在C#中称为派生,其中,A类称为基类或父类,B类称为派生类或子类。如右图所示。 继承机制的优势在于降低了软件开发的复杂性和费用,使软件系统易于扩充,大大缩短了软件开发周期,对于大型软件的开发具有重要的意义。
多态性(polymorphism)是指在基类中定义的属性或方法被派生类继承后,可以具有不同的数据类型或表现出不同的行为。其对象对同一消息会做出不同的响应。 如,“启动”是所有交通工具都具有的操作,但“启动”操作对不同的交通工具的具体实现是不同的,如汽车是“发动机点火,启动引擎”,轮船是“起锚”,气球飞艇是“充气,解缆”。 为了实现多态性,需要在派生类中更改从基类中自动继承来的数据类型或方法。这种为了替换基类的部分内容而在派生类中重新进行定义的操作,在面向对象的概念中称为覆盖。 这样一来,不同类的对象可以响应同名的消息(方法)来完成特定的功能,但其具体的实现方法却可以不同。 优点:是软件开发更加方便,增强程序的可读性。