c#大学绝密复习资料.doc_第1页
c#大学绝密复习资料.doc_第2页
c#大学绝密复习资料.doc_第3页
c#大学绝密复习资料.doc_第4页
c#大学绝密复习资料.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

第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)文档注释主要通过来进行实现(1、为类加文档注释2、为常量加摘要,变量与此类似3、为函数加文档注释)*注意:与方法相关的XML文档注释要复杂得多。不但需要summary标签添加总体描述,还要用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的表达式应怎么写,才能保证结果正确。2、枚举项中能否具有相同数值的枚举项?为什么?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),反之,可适当选择dowhile。*注意看书上微波炉程序要考(P121)foreach(类型 标识符 in 集合表达式 ) 语句;5.3 转移语句 break语句(用于终止最内层的while、do-while、for和switch语句的执行。当程序遇到这一语句后,执行紧接在被终止执行的代码段后面的语句。)continue语句(当程序遇到这一语句后,停止当前进行的这次循环并把控制返回到当前循环的底部,以便于进行下一次循环。与break语句不同的是,continue语句不是终止整个循环的执行,而仅仅终止当前这一次循环的执行。) goto语句 (也可用来跳出循环和switch语句。它无条件地转移程序的执行控制,其转移目的地是一标号,因此要求标号与goto语句处在同一个函数中。其语法格式为:1.goto 标号;2.goto case 表达式;3.goto default;由于大量或随意使用goto语句会使程序的流程无规律,程序的可读性降低,因此,应尽量避免。)本章作业:2、C#中有哪四种循环结构,在程序中应怎么选择?3、抄写第二次修改之后的打印素数的程序,并根据程序画出程序流程图,然后对程序每一行进行注释。第6章 函数 6.1 为什么要使用函数:1.函数并不一定就是对象的操作;2.代码复用;3.隐藏细节6.2 定义函数:函数的定义包括函数说明和函数体两大部分组成,其一般格式为:函数修饰符 返回类型 函数名(形式参数表)形式参数表是由一个或多个下面的参数定义组成, 参数之间用逗号分开。例如:参数修饰符 类型 参数名函数调用的一般形式为:对象.函数名(实参表); /通过实例调用函数如果是在同一个类的内部调用函数,则不需要指定对象名,形式为:函数名(实参表) /=this.函数名(实参表) 调用函数和调用数据成员的区别是:调用函数时不论是否有调用参数,函数名后必须跟括号。 6.3 参数的设计:1.参数的命名(参数相当于一个局部变量,作用域范围就在函数内部,因此应遵循Camel规则,小写首字母,并使用有描述性的英语名称。)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 搭建一个典型的类,以复数类为例4个步骤:1.找准核心数据,定义属性和构造函数。2.对象的表现形式。3.定义等价原则。4.实现基本运算。7.6何时使用类:1.数据成员大小超过16字节时;2.需频繁进行参数传递等数据传送操作;3.需要使用继承及多态特性;4.需要进行特别的初始化操作;7.7何时使用结构:(1)具有与简单数值类型相似的行为;(2)数据成员大小在16个字以内;(3)无须特别的初始化操作。本章作业:1、面向对象思想的3个原则是,各自有什么作用。(1)封装:将数据成员和属于此数据的操作方法,放在同一个实体或对象中。((1)模块化;(2)信息隐藏 )(2)继承:父类定义一些通用的属性与行为,其子类继续使用。((1)实现代码复用;(2)简化设计过程 )(3)多态:在同一个类中可有许多同名的方法,但其参数数量与数据类型不同,而且操作过程不同,不同调用者得到的效果完全不同。(高度灵活的抽象)2、解释类和对象的转化图。3、结构和类的不同点有哪些,你什么时候会用类来描述对象。4.建立一个较好的类,你需要几个步骤?按正规步骤写一个“矩形类”试试。第8章 封装 8.1 使用字段的时机:(1)存储核心数据(除了一些提供功能的静态类(如:Math),其他描述对象的类都应使用字段来存储类的核心数据(即对象的属性)。);(2)维持中间结果(函数可以处理传入的参数并返回结果,但是并不能长期的维持信息,内部的数据随着函数执行完毕而消亡!如果需要在多个函数共享数据,可以用字段来充当一个类的全局变量,保存一些中间值。)如何定义字段:字段修饰符 类型 字段名=字段初始表达式;字段修饰符可以是new、public、protected、internal和private等类型;注意:(1)字段命名:私有采用Camel规则,公开采用Pasal规则。不要加前缀或没有必要的后缀。(2)访问控制:字段是类的内部数据,必须是安全可信的,因此必须注意其值的存取权限,通常字段可设为外部不可见(private),外界通过属性获得函数,让自身操作自己。如何定义常量字段:修饰符 const 类型 常量名=值;常量修饰符可以是new、public、protected、internal和private等类型,通常用public。如何访问字段:在程序中,如果字段修饰符是公有的,就可以直接利用字段名,或以成员访问的形式E.M获得字段的数值。如果一个字段以一个成员访问的形式(E.M)引用时,如果M是一个静态字段,则M是属于类级的,那么E必须指示的是一个类(类型);如果M是一个实例字段,则M是属于各个对象的,那么E必须指示的是一个实例(对象);绝对不能交叉调用。8.2 构造函数的定义注意构造函数的特点:(1)构造函数名字和类的名字绝对相同; (2)构造函数没有返回值,包括不写void。8.3 析构函数:析构函数名必须与类名相同,但为了区分构造函数,前面需加“”表明它是析构函数。析构函数不能写返回类型,也不能带参数,因此它不可能被重载,当然也不能被继承,所以一个类只能有一个析构函数。一个类如果没有显式地声明析构函数,则编译器将自动产生一个缺省默认的析构函数。析构函数不能由程序显式地调用,而是由系统在释放对象时自动调用。如果这个对象是一个派生类对象,那么在调用析构函数时也会产生链式反应,首先执行派生类的析构函数,然后执行基类的析构函数,如果这个基类还有自己的基类,这个过程就会不断重复,直到调用Object类的析构函数为止,其执行顺序正好与构造函数相反。8.4 属性:属性值的读写是通过类中封装的特别方法get访问器和set访问器实现的。属性的使用时机:(1)表示某个物体自身客观存在的某种特征或固有状态;类的普通全局变量不用写属性;(2)数据访问控制:对字段的值,应在设置了相应的有效性检查之后才能修改,当然也涉及到了是否可读写的问题;(3)需要后续的操作:修改某字段值之后,还需要针对这一变化进行进一步的操作(如修改汽车长度之后,车重也会变化);(4)数据处理简单,如果处理太复杂建议调用函数;(5)提供某种预定义的对象实例,供外部对象使用。 *在使用属性时应注意,尽管属性与字段有相同的使用语法,但它本身并不是字段,属性更接近于方法。属性不直接对应存储位置,所以不能把它当变量使用,不能把属性作为ref或者out参数传递。属性和方法一样也有静态修饰,在静态属性的访问器中不能访问实例数据也不能引用this。 8.5 方法使用的时机:(1)表示某一种操作:这是使用方法的作用。(2)调用方法是耗时的任务:如果用属性赋值,界面看起来更加简单,但是资源损耗和调用函数是一样的,因此,写成函数避免别人随意更改属性值。(3)有副作用的操作:在修改属性的时候可能修改到其他的值,这就应该用方法。(4)返回值不确定:即便带入的参数都相同,结果也不相同(比如:返回一个对象的ID号)。(5)返回数组或者集合:与(2)相同。8.6 静态方法的定义与调用 、访问类成员 8.7 命名空间作用(1)为类似的类型进行归类;(2)解决重名问题)和规则(1)采用Pascal规则;(2)表示一个相关的类别用名词,表示动作概念用动名词)本章作业:1、什么时候会用到字段?静态字段和实例字段的使用有什么不同?2、构造函数的功能和特点3、属性的访问控制器有几种,分别实现什么功能。4.自由想象,写一个汽车类(Car),要求封装了字段、属性、构造函数、方法等成员各两个以上。另写一个类(CarDemo),初始化两个汽车对象,并使用其成员完成相关的功能。第9章 异常处理(C#支持trycatchfinally式的结构化异常处理机制。主要作用:(1)经常有一些无法预先避免的异常需要我们在代码中进行实时捕捉,(2)我们自己也需要通过异常机制来报告程序在执行过程中出现了错误。)第10章 继承与多态 10.1 继承的使用:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。使用继承而产生的类被称为派生类或者子类,而被继承的类则称为基类、超类或父类。客观世界中的许多事物之间往往都是具有相同的特征,具有继承的特点。为什么使用继承:因为它有1.自上而下逐步细化(已知最高类,一层一层的向下扩展,派生出各个子类。)2.自下而上逐步抽象(因为需要求多种形状共同的面积、周长,所以整理下层的类型,抽取相应的功能形成共同父类,下层实体本身就存在,为了达到统一而抽象出父类在有上层实体之后,才陆续发展出下层实体。)类继承的定义:创建派生类要在派生类的名字后面加上冒号“:”,后面再跟上基类的名字。类继承的注意事项:(1)如果一个类是从其他类派生的,那么该类也继承其直接基类的所有成员,但基类的构造函数和析构函数除外。(2)继承具有传递性,也继承了其间接基类的成员。(3)派生类可以扩展它的基类(不能去除基类成员)。(4)基类的构造函数和析构函数不能被直接继承,但是可以继承的其他成员的存取权限可能会影响到成员在类中的访问。(5)派生类可以隐藏继承成员的实现。(6)对一个派生类实例的引用可以当成是对该类的基类实例的引用(如正方形,可称呼为方形、形状)。(7)类可以声明虚方法、虚属性和虚下标指示器,并且派生类可以重载这些函数成员的实现,这样就使类的多态性得以实现。base关键字10.2 继承的限制:1、抽象类: 用abstract来修饰抽象类,表示该类只能作为父类,被用于继承,而不能进行对象实例化。但是他可以定义很多对象,不过须使用子类的构造函数去实例化。 2、密封类: 用sealed来修饰类为密封类,阻止该类被继承。对一个类同时作abstract和sealed的修饰是没有意义的,也是被禁止的。 10.3 接口介绍:接口是用来定义相关或不相关类型对程序某种协定的遵从,或者是存在的共同点。接口好比一种模版,这种模版定义了实现接口的对象必须实现的方法,其目的就是让这些方法可以作为接口实例被引用。接口类似于抽象类,但它与类之间的差别很大:类继承中,基类是派生类最本质的特性,而接口所指的共同点,多半不是本质上的共性。接口的特点:1.接口不提供任何实现代码。2.接口只包含方法、属性、事件和索引器,而不包含数据成员、构造函数、析构函数,也不能包含静态成员。3.接口中的所有成员都被视为公有的。4.接口允许多重继承。1.接口定义及命名规则、2.接口的成员可以是方法、属性、索引器和事件,但不可以有任何的成员变量,也不能在接口中实现接口成员。接口的成员默认是公共的,因此不允许成员加上修饰符。父接口可以有多个,即接口采用的是多重继承。、3.接口的实现 、4.接口与抽象类的选择:(1)欲添加约定的类型中,有无结构?(结构不可继承) (2)欲添加约定的类型中,有无类已经是派生类?(类是单继承) (3)该约定是这些类型的本质共性吗?( 接口不是) (4)该约定在后续版本中是否经常变化(是否增加新的方法)。10.4 使用多态(方法重写):(1)子类重写父类的实现方法,使同一操作具备不同的效果;(2)父类的对象,子类去初始化,可产生一系列类型相同,而本质不同的对象。抽象方法:当一个实例方法的声明包括一个abstract修饰符,这个方法就被称为是一个抽象方法。一个抽象方法同时也是一个虚方法。抽象方法只能在抽象类中声明,并且它的声明中不能包含static、virtual、override修饰符。抽象类与抽象方法:在抽象类中使用关键字abstract定义抽象方法,要求所有的非抽象派生类都要重载实现抽象方法。引入抽象方法的原因在于抽象类本身是一种抽象的概念,方法并不要具体的实现,而是让派生类来重载实现。Shape类中GetArea方法没什么意义,而只有到了类Circle类和Rectangular才可以计算面积。抽象方法写法:public abstract double GetArea();则派生类重载实现为:public override double GetArea()本章作业:1、从定义和继承两个角度比较接口和抽象类的相同点和不同点2、叙述虚方法重写和非虚方法重写在方法定义上的不同点,及他们在使用上的不同,方法重载与他们的关系又是什么?3、先定义一个动物类,同学们自己列出3个属性,两个抽象方法,再定义一个羊类,增加定义两个属性,两个方法。第11章 委托和事件11.1委托的声明与使用 、多重委托 :1.相对于上面的一次委托只调用一个方法,一次委托也可以调用多个方法。多重委托即通过一个委托调用两个或更多实现方法。2.任何返回值为void的委托都可以多重委托。3.多重委托具有创建方法链表的能力。方法链表中的方法必须具有相同的参数,而且这些方法的返回类型必须定义为void。通过+和-运算符实现多重委托的增加或减少。11.2 事件的操作步骤 什么是事件驱动模式、事件的创建和使用 本章作业:1、 以单选按钮选中状态改变事件为例。通过查阅.Net开发包,分析C#的事件处理步骤。2、自行上机调试两窗口之间相互传值,试完成当B窗口的文本框内容发生改变时,A窗口的标题及时修改为B窗口文本框的值,在作业纸上写出A、B窗口类的相应代码。第14章 ADO.Net数据库编程技术14.1数据库操作概述 14.2、ADO处理数据库步骤DBMS1. 创建连接对象:XXXConnection Conn = new XXXConnection(Connection连接字符串)注意:Connection对象最重要的属性是连接字符串ConnectionString,这也是Connection对象惟一的非只读属性。ConnectionString是一个字符串,用于提供登录数据库和指向特定数据库所需的信息。2.打开数据源:Conn.Open();关闭数据源:Conn. Close();操作数据库(分两种情况)、关闭数据库注意trycatchfinally处理模式14.3操作数据库实例:(1)不产生记录集:使用XXXCommand对象(XXX与Connection的前缀相匹配),可以执行增加、修改、删除语句。XXXCommand构造函数通常有3种方法重载:1.XXXCommand(string cmd, XXXConnection conn); 用cmd初始化CommandText的值,用conn初始化Connection的属性值。2.XXXCommand(string); 用string字符串的内容初始化CommandText的值,而Connection的属性值为空。3.XXXCommand();初始化CommandText的值和初始化CommandText的值都为空。 (2)要产生记录集(使用DataAdapter对象与DataSet对象 ):DataSet对象:用DataSet对象管理数据,DataSet类似于一个在客户机内存中的数据库,可以在这个数据库中增加删除表,定义表结构和关系,增加删除表中的行。DataSet类不考虑其中的表结构和数据是来自数据库、XML文件还是程序代码。Command对象的属性与函数:CommandText是字符串属性,包含要执行的SQL语句或者数据源中存储过程的名字;Connection属性指定要执行数据命令的连接对象,即指定要执行数据操作的数据源;ExecuteNonQuery()方法 :该方法主要执行UPDATE、INSERT或DELETE这样的SQL语句,对于UPDATE、INSERT和DELETE语句,对数据库中的数据进行修改,返回值为该命令所影响的行数。对于SELECT语句,返回值为-1。如果发生回滚,返回值也为-1。 第15章 网络协议与套接字编程 15.1进程:在Windows中,系统能够同时运行多个程序,每一个正在运行的程序称为一个进程 ;线程:同一个进程又可以分成若干个独立的执行流,我们称之为线程。 线程是操作系统向其分配处理器时间的基本单位。 线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。 查看进程Process.GetProcesses()、GetProcessesByName;启动进程MyProc.Start();结束进程instance.Kill();进程的常见属性15.2 C#中线程的开发(P196)new Thread()New ThreadRunnableStart()Not RunnableAbort()Abort()Deadyield()Abort()运行结束.Cpu让出Suspend()Sleep()I/O流阻塞得到Cpuresume()休眠结束I/O指令.waitingsuspending sleepingblockedreadyrunning启动带参函数和不带参数的函数Thread thread1=new Thread(new ThreadStart(Method1);thread1.Start();Thread th1 = new Thread(new ParameterizedThreadStart(Method1); th1.Start(object);15.4 套接字编程技术(大程序)网络端点1、建立套接字对象svrsoc=new Socket()绑定网络端点svrsoc.Bind(server)3、客户建立Socket对象 soc.Connect(server)服务器 客户机 流对象5、关闭 Socket流对象5、关闭 Socket2、接收连接返回新Socket对象Socket csoc=svrsoc.accept() 监听模式svrsoc.Listen(10);4、构造网络流对象netStream =new NetworkStream(csoc);netStream.Read()(接收)netStream.Write() (发送)4、构造网络流对象netStream =new NetworkStream(soc); netStream.Write()(发送)netStream.Read()(接收)csocsoc1.服务器端口绑定与监听 在服务器与客户机连接传输数据前,服务器需要做以下事情: 1) 创建一个套接字。 2) 创建本地IPEndPoint对象。 3) 使用Bind()方法将所创建的套接字与本地IPEndPoint绑定。 4) 使用Listen()方法设置套接字为监听模式。 5) 使用Accept()方法接收客户端连接请求并为客户端创建一个

温馨提示

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

评论

0/150

提交评论