您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > c#大学绝密复习资料
1第1章C#基本的代码风格1.1换行与缩进最佳的断行位置的设定(4点):1、将折行位置处的分隔符(如本例中的“||”运算符等)留在上一行的行末,给人以“此行并未结束”的直观印象2、换行后的表达式应当完整,必须清晰体现其内在的逻辑关系。通常选择整个表达式中最高的关系层次进行断行,如赋值符3、当参数数量较多、较长或者包含表达式的时候,为了将逻辑体现得更为清晰,应将函数调用中的每一个参数都分行书写4、对于SQL语句或其他较长的复合语句,每个子句单独写成一行,更易理解。每行只写一条语句:(1)换行字数的标准不便统一;(2)无法设置语句断点分行定义变量:通常在变量作用域范围较大,需要对变量进行注释时,必须将变量单行定义,并加上注释。如果只是类似于简单双重循环的循环变量,则没有必要分行定义。1.2避免代码过于拥挤使用空行分隔代码块:(1)引用命名空间与正式程序之间。(2)类中各个成员(属性、方法)之间。(3)同一个函数中的各个功能之间。使用空格降低代码密度:1.单目运算符与它的操作数之间应紧密相接,不需要空格2.在双目、三目运算符的左右两侧分别添加空格。3.括号(包括小括号、中括号与大括号)的内侧应该紧靠操作数或其他运算符,不需要添加额外的空格。4.不要使用连续的两个或多个空格。1.3缩进的方式:1、嵌套或包含关系引起的缩进(1.包含关系下的缩进;2.嵌套关系下的缩进);2、因换行而产生的缩进(1.因换行而产生的缩进;2.函数调用时分行书写参数而引起的缩进)缩进的使用方法:使用Tab及Shift+Tab键缩进在操作上非常方便,可以进行单行或多行的缩进。(1)Tab向右缩进,增加4个空格。(2)Shift+Tab向左缩进,减少4个空格。1.4大括号的使用方式在C#中,大括号仍然扮演着几种不同的角色:表示层次关系(如定义命名空间、类时使用的大括号)、表示复合语句(如if、for中的大括号)、表示数组元素。大括号的位置:C#默认风格为:左右大括号皆单独写成一行;空大括号作用:预留占位,最好需要一条语句做简单注释,方便以后细化。一条语句,也写在大括号内。1.5保持项目文件的条理性:1.解决方案的结构呼应;2.代码文件的结构;3.使用#region标记;本章作业:1、如何确定最佳的断行位置?2、写一个完整的的程序——“在控制台中输出梯形九九表”,并将核心代码段用#region隐藏起来。第2章养成良好的注释习惯2.1注释的用途:1.解释代码的意图2.对局部变量的说明3.充当代码标题4.指出例外情况5.开发过程的提示2.2普通注释的格式:单行注释(用//);多行注释(用/*……*/)2.3正确使用XML文档注释:类、属性、方法、构造方法前面都应当加上XML文档注释(P38)文档注释主要通过summary…/summary来进行实现(1、为类加文档注释2、为常量加摘要,变量与此类似3、为函数加文档注释)*注意:与方法相关的XML文档注释要复杂得多。不但需要summary标签添加总体描述,2还要用param标签为每个参数进行详细的说明,并用returns标签描述函数的返回值。本章作业:1、简述注释的用途有哪些?2、写一个完整的复数类Complex,要求具有:(1)两个字段实部、虚部,(2)两个构造函数【带两个参数(为实部和虚部赋值)、不带参数(实部虚部都为0)】,(3)两个方法(加法、减法),参数也是一个复数,返回值为“a+bi”形式的字符串。(4)并写一个主类,对复数类的功能进行测试。(5)对复数类及该类的每一个成员都应进行XML注释,并观测在调用成员时的弹出信息。第3章一般命名规范3.1选用合适的名称:1.使用字符的限制((1)所有的标识符只能由字母、数字和下划线这三类字符组成,而且第一个字符必须为字母或下划线;下划线主要用于分隔具有多个单词的常量。(2)标识符中不能包含空格、标点符号、运算符等其他符号;(3)标识符区分大小写;(4)利用英语单词的组合命名,做到一目了然;(5)标识符不能与C#关键字名相同;(6)标识符尽量不与C#中的类库名相同。);2.使用含义明确的英语((1)除局部变量外,大多数标识符的命名都应采用清晰的描述文字。(2)局部变量中标识符如果遇到如下可以简化的标识符,可以采用简化词,否则还是应准确命名。(3)命名应遵从计算机专业英语命名习惯,不要使用汉语拼音。)3.2大小写规则:1.Pascal(标识符中的每个首字母大写,其余字母小写。);2.Camel规则(标识符的第一个单词首字母小写,其余单词的首字母大写,剩余小写。)大小写规则的选择:除了极少数外部程序不可见的“私有及受保护的字段”、”局部变量”、”函数参数”等应使用Camel规则,其余的绝大多数都采用Pasacl规则,主要有:命名空间、类、结构、函数、属性、事件、委托和公开的字段等。控件命名采用匈牙利命名法特点:在变量的名称中加上反应其数据类型的缩写前缀;作用:由于他会产生信息冗余,修改复杂,如今在C#中基本不采用,但是在控件的定义中却能使控件的含义体现得更明显。本章作业:1、命名中使用字符的限制及规则2、Pascal与Camel规则的区别,何时采用Camel规则。3、创建一个Windows工程或者一个ASP.NET网站,并制作一个用户注册界面,要求命名规范。第4章处理数据4.1关于数据类型4.2变量的使用4.3使用枚举:枚举类型是一组命名的常量集合,其中每一个元素称为枚举成员。enum枚举类型名{数据1,数据2,…,数据n};访问枚举成员,其格式为:枚举名.枚举成员名4.4避免魔数4.5运算符与表达式:表达式是由操作数和运算符构成的。操作数可以是常量、变量、属性等;运算符指示对操作数进行什么样的运算。复杂表达式的化简:(1)++,--尽量单行写,避免引起可能忽略掉的错误(2)多运算符的表达式,尽量多加括号,便于理解。(3)?:运算符在表达式过于复杂的情况下可以换成if语句。本章作业:1、通常判断一个double型的d1是否为3.14的表达式应怎么写,才能保证结果正确。32、枚举项中能否具有相同数值的枚举项?为什么?3、为什么表达式不宜复杂化?第5章程序流程控制5.1分支结构if结构的使用及注意事项(1.布尔表达式杜绝使用赋值符。2.对于多判断条件嵌套的处理。)switch语句的使用方法及注意事项(1、常量表达式1的类型和值。2、各分支之间的贯穿。)if和switch的选择:Switch结构在使用中具有以下限制:(1)每组仅能测试一个表达式;(2)仅能区分并列互斥的多个不同情况;(3)仅能用于整形、字符串和枚举等简单类型的表达式。而他唯一优于if结构的就是程序简洁,因此,只要程序能采用Switch结构简单的描述各分支,则采用switch结构,否则全部采用if结构。尽量避免在Switch中出现多分支穿透,即多个分支表示一个意思。5.2循环结构三种常规循环的选择:(1)当循环变量为数值类型,且循环变量的迭代更新非常简单,能清晰的看出循环次数时,应使用for循环(如:求1+3+5+…+99的总和),否则应使用while循环(如:将某文件夹下的所有文件内容拷贝到一个新文件abc.txt中)。(2)如果循环次数可能随着程序的运行而进行非正常的改变,循环次数不可预知。即在循环体中会修改循环变量,则应采用while循环,避免妨碍理解。如:微波炉加热程序、游戏打斗程序。(3)当程序次数可能出现0次时,应选择当循环(for、while),反之,可适当选择do…while。***注意看书上微波炉程序要考(P121)foreach(类型标识符in集合表达式)语句;5.3转移语句break语句(用于终止最内层的while、do-while、for和switch语句的执行。当程序遇到这一语句后,执行紧接在被终止执行的代码段后面的语句。)continue语句(当程序遇到这一语句后,停止当前进行的这次循环并把控制返回到当前循环的底部,以便于进行下一次循环。与break语句不同的是,continue语句不是终止整个循环的执行,而仅仅终止当前这一次循环的执行。)goto语句(也可用来跳出循环和switch语句。它无条件地转移程序的执行控制,其转移目的地是一标号,因此要求标号与goto语句处在同一个函数中。其语法格式为:1.goto标号;2.gotocase表达式;3.gotodefault;由于大量或随意使用goto语句会使程序的流程无规律,程序的可读性降低,因此,应尽量避免。)本章作业:2、C#中有哪四种循环结构,在程序中应怎么选择?3、抄写第二次修改之后的打印素数的程序,并根据程序画出程序流程图,然后对程序每一行进行注释。第6章函数6.1为什么要使用函数:1.函数并不一定就是对象的操作;2.代码复用;3.隐藏细节6.2定义函数:函数的定义包括函数说明和函数体两大部分组成,其一般格式为:[函数修饰符]返回类型函数名([形式参数表])形式参数表是由一个或多个下面的参数定义组成,参数之间用逗号分开。例如:[参数修饰符]类型参数名函数调用的一般形式为:对象.函数名(实参表);//通过实例调用函数如果是在同一个类的内部调用函数,则不需要指定对象名,形式为:函数名(实参表)//=this.函数名(实参表)调用函数和调用数据成员的区别是:调用函数时不论是否有调用参数,函数名后必须跟括号。6.3参数的设计:1.参数的命名(参数相当于一个局部变量,作用域范围就在函数内部,因此应遵循Camel4规则,小写首字母,并使用有描述性的英语名称。)2.不使用保留项3.何时使用值参数4.引用参数(是以ref修饰符声明的参数。引用与值参数不同,引用参数并不创建新的存储单元,它与函数调用中的实在参数变量同处一个存储单元。因此,在函数内对形参的修改就是对外部实参变量的修改。格式:ref参数的数据类型参数名)*使用ref参数的注意点:(1)ref关键字仅对跟在它后面的参数有效,而不能应用于整个参数表。例如Sort函数中x,y,z都要加ref修饰。(2)在调用函数时,也用ref修饰实参变量,因为是引用参数,所以要求实参与形参的数据类型必须完全匹配,而且实参必须是变量,不能是常量或表达式。(3)在函数外,ref参数必须在调用之前明确赋值,在函数内,ref参数被视为初始值已赋过。5.输出参数(在参数前加out修饰符的被称为输出参数,它与引用型参数类似,输出型参数也不开辟新的内存区域。与引用型参数的差别在于,调用函数前无需对变量进行初始化。输出型参数用于传递函数返回的数据。在函数返回后,传递的变量被认为经过了初始化。传递的参数格式为:out参数的数据类型参数名)6.数组型参数7.重载函数的参数一致性体现6.4函数重载:1.重载的语义;2.保持核心代码唯一;3.保持重载函数的参数一致性;6.5参数检查的必要性((1)检查零值及空引用;(2)检查枚举类型的合法性(超出枚举值范围);(3)防止引用类型的数据被外部篡改(多函数同时操作一个数据))6.6函数的出口(离开函数的三种方式:1.执行完函数中最后一行代码,自然结束;2.通过return返回值后离开(对于void函数来说即是无返回值);3.抛出异常并强制退出)本章作业:1、方法的参数有几种类型,各举一例进行描述。2、利用重载,设计一个不但可以做两个整数进行交换,而且还可以让两个浮点型数交换的程序。第7章结构与类7.1结构与类的区别:最根本的区别是结构是值类型,而类是引用类型。1.关于存储类型(结构是值类型(空间小,速度快);类是引用类型(空间大,速度慢))1)值类型变量在栈空间中直接存储实际数据。2)引用类型变量(对象)在堆空间中存储它们的实际数据,而在栈空间中存储实际数据的引用(地址)。3)特殊数值null是所有引用类型都适用的,并且表示缺乏实例。2.关于继承(结构不可以;类可以)3.关于定义构造函数(结构不能定义默认,必须带参;类可以自定义无参的默认构造函数)4.关于定义析构函数;结构不可以;类可以)5.关于初始化(结构不能为实例变量设初始值,类可以)7.5搭建一个典型的类,
本文标题:c#大学绝密复习资料
链接地址:https://www.777doc.com/doc-4710190 .html