版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络与通信程序设计(C#)课程简介与目标课程简介本课程学习和讨论基于.NET架构,选用C#语言进行计算机网络通信程序以及计算机接口间信息交换程序开发的原理和方法。课程目标了解.NET架构掌握C#的语法、编程方法以及相关工具的使用了解网络通信、接口通信编程的基本原理掌握网络应用程序、通信应用程序设计开发技术了解软件工程管理的基本知识课程教学与考核学习方法理论学习+编程实践网络学习(MSDN、CSDN、搜索引擎)实践,实践,实践考核方式平时考勤、实验、综合设计卷面考试教材与教参教材金华. C#网络编程技术教程M. 人民邮电出版社参考书目马骏. C#程序设计教程M. 人民邮电出版社张晓明. C#网络
2、通信程序设计M. 清华大学出版社刘瑞新. C#网络编程及应用M. 机械工业出版社吴晨. C#网络与通信程序设计案例精讲M. 清华大学出版社郑阿奇. C#网络编程M. 电子工业出版社美Michael McMillan. 数据结构与算法(C#语言描述)M. 人民邮电出版社美Colin Campbell. 设计模式-.NET并行编程M. 清华大学出版社包善东. 更锋利的C#代码M. 清华大学出版社李江全. Visual C#.NET 串口通信及测控应用典型实例M. 电子工业出版社Wei-Meng Lee. Practical .Net 2.0 Networking ProjectsM. Apress
3、教学安排第一章 .NET平台及C#简介.NET平台 .NET是微软公司推出的一个全新概念的技术,它代表了一个集合、一个环境和一个可以作为平台支持下一代Internet的可编程结构。计算机与程序语言1957前,插拔、开关、纸带、机器语言、汇编1957,IBM,FORTRAN,科学与工程计算1969,汤普森,Unix;里奇,为Unix开发出C1970,阿伦凯,Smalltalk语言,一切皆对象(万能细胞)1975,微软商化M.BASIC,发家1983,C+面世,”带类的C”,适用于编写大型程序1985,Windows投放市场,1991年成为赢家,推出VB1992,高斯林,Oak语言,在C+基础上吸
4、收Smalltalk思想1995,高斯林,Oak改名为Java,互联网编程(跨系统,跨平台)2001,微软输掉Java官司,推出C#C的一家CSmalltalkC+JavaC#C#语言简介 C#的背景:从C和C+演变而来的,结合了C/C+的强大功能、Java的面向对象特性和Visual Basic的易用性,从而成为一种简单的类型安全、面向对象的编程语言,是.NET公共语言运行环境的内置语言。C#的特点:语法简洁面向对象设计与Web紧密结合完整的安全性和错误处理版本控制兼容性,灵活性 C#与C+的比较编译目标:C+代码直接编译为本地可执行代码,C#默认编译为中间语言(IL)代码,执行时再通过Ju
5、st-In-Time将需要的模块临时编译成本地代码。内存管理:C+需要显式地删除动态分配给堆的内存,而C#不需要这么做,C#采用垃圾回收机制自动在合适的时机回收不再使用的内存。指针:C+中大量地使用指针,而C#使用对类实例的引用,如果确实想在C#中使用指针,必须声明该内容是非安全的。字符串处理:在C#中,字符串是作为一种基本数据类型来对待的,因此比C+中对字符串的处理要简单得多。库:C+依赖于以继承和模板为基础的标准库,C#则依赖于.NET基库。类继承:C+允许类的多继承,而C#只允许类的单继承,通过接口才能实现多继承。 C#和Java的比较C#与Java的相同之处。两者都编译成跨平台的、跨语
6、言的代码,并且代码只能在一个受控制的环境中运行。自动收集垃圾内存,并且取消了指针。在C#中可以使用指针,不过必须注明unsafe关键字。都不需要头文件,所有的代码都被“包(package)”限制在某个范围内,并且因为没有头文件,所以消除了类定义的循环依赖。C#与Java的区别C#面向对象的程度比Java高。C#具有比Java更强大的功能。C#的速度比Java快。Visual Studio 2008 集成开发环境Visual Studio 2013 集成开发环境Visual C# 的应用程序类型控制台应用程序WinForm,Windows窗体应用程序Windows服务应用程序WebForm,We
7、b窗体应用程序WPF应用程序(Windows Presentation Foundation) 新一代图形系统,集成WebForm/WinFormWCF服务应用程序(Windows Communication Foundation) 数据通信接口初识C#程序(控制台应用程序)新建项目控制台应用程序程序文件Program.cs:using System;/引用命名空间(注释)using System.Text;/自定义命名空间namespace ConsoleApplication1 class Program/类 /Main方法(程序入口) static void Main(string ar
8、gs) Console.Write(Hello World); 初识C#程序(窗体应用程序)C#项目的组织解决方案项目项:文件(文件夹)命名空间与类的层次引用指令:using关键字Main方法Main可以放在任何类中,规范做法则是放在Program.cs中代码注释/单行注释/*/块注释/XML注释程序文件控制台程序:Program.cs窗体程序:Program.cs、Form1.cs、Form1.Designer.cs任务1:熟悉Visual Studio开发环境安装 Visual C# 2008 或者 Visual Studio 2008熟悉各种菜单、工具窗口新建并保存控制台应用程序工程(选
9、择C#语言)在Main方法中,输入语句:Console.Write(Hello World); 启动程序,查看运行结果新建并保存窗体应用程序工程(选择C#语言)新建一个窗体,并设置窗体标题、大小等相关信息在该窗体中插入一个标签控件,显示“Hello World!”发布成应用程序,安装试用第二章 C#基本语法与编程2.1 标识符与关键字关键字(保留字,系统标识符):C#中有特殊含义的标识符标识符:唯一标识代码中的各种程序元素,一般指用户标识符标识符的命名规则字符集遵循Unicode3.0标准只能使用字母、数字和个别特殊符号(大小写敏感)必须以字母或者下划线开头以“”符号开始时,允许使用关键字作为
10、标识符标识符必须“先定义后使用”2.2 数据类型值类型引用类型数 据 类 型描述取值范围sbyte有符号 8 位整数128127byte无符号 8 位整数0255short有符号 16 位整数3276832767ushort无符号 16 位整数065535int有符号 32 位整数21474836482147483647uint无符号 32 位整数04294967295long有符号 64 位整数92233720368547758089223372036854775807ulong无符号 64 位整数0184467440737095516151.整数类形: C#定义了8种整数类型。它们在内存中
11、占据的内存大小各不相同,取值范围也各不相同。值类型类型大致取值范围描述精度float1.510453.4103832位浮点数7位double5.0103241.71030864位浮点数1516位decimal1.010287.91028128位数据类型2829位有效位2.布尔类形:表示“真”或“假”的数据类型,取值为“true”或“false”,主要用于进行逻辑判断,类型标识符为bool。3.实数(浮点数)类型:单精度(float)、双精度(double)、财务及货币(decimal)值类型转义字符描 述转义字符描 述转义字符描 述n换行符f换页符0空字符t水平制表符Tab反斜杠字符 v垂直制
12、表符Tabr回车符单引号a感叹号b退格符双引号4.字符类型:C#使用字符类型(char)来处理ASCII字符和Unicode字符Unicode是16位字符,可以表示世界上多数已知的书面语言C#中的字符常量使用单引号将字符括起来C#使用转义字符来处理特殊字符,以“”开头char类型可以隐式转换为ushort、int、uint、long、ulong、float、double或decimal类型。值类型值类型5.枚举类型用一种便于记忆的标识符来表示有限个常数的集合 enum Days Mon, Tue, Wed, Thu, Fri, Sat, Sun;/Mon的值为0,其余的值依次递增enum Da
13、ys Mon=1, Tue, Wed, Thu, Fri, Sat, Sun=0; /Mon后面的枚举 元素的值依次递增从enum类型到基本类型的转换需要用显式类型转换来完成6.结构类型:复合数据类型struct 结构名成员声明列表(访问权限 数据类型 成员);;struct Student public int ID; /学号 public string Name; /姓名 public float Score; /成绩;引用类型引用类型:不存储实际数据,存储数据的引用(地址)包括类类型、字符串类型、数组类型、接口类型、委托类型数组数组定义后,在使用前必须初始化,也可以在定义的同时初始化数组
14、:数据类型 数组名;int num = new int31,2,5;多维数组:数据类型 , 多维数组名;int, num = new int2,3 1,2,3,4,5,6;交错数组(数组的数组/不规则数组):数据类型 数组名;int array = new int2 new int2 1,2 , new int33,4,5;常量与变量常量在程序运行期间值保持不变的量,只能赋一次值习惯上将常量所使用的标识符全部大写const int NUM = 10;变量在程序运行中可以改变的量int x,y;int a,b=3,c=20,d;数据类型的转换C#是一种强类型语言,通常不允许一种类型替换另一种类型
15、隐式转换:当被转换的类型的取值范围完全包含在转换到的类型的取值范围之内时才能执行隐式转换char c1=Y;int s1;s1 = c1;显式转换(强制类型转换):明确要求编译器将一种数据类型转换为另一种数据类型显式类型转换过程中可能导致数据精度损失或者引发异常short s1;int x1=13;s1 = (short)x1;s1 = Convert.ToInt16(x1); / .NET框架的类型转换类装箱与拆箱装箱与拆箱机制:C#语言中引入了让值类型在需要时转化为引用类型,以及让引用类型在需要时转换为值类型的机制。装箱是指将一个值类型隐式转换为一个object类型的过程int x = 1
16、5;object obj = x; /利用隐式转换实现装箱object obj = (object) x; /利用显式转换实现装箱拆箱是指将一个object类型显式转换成一个值类型的过程int val = 100; object obj = val; /装箱int num = (int) obj; /拆箱2.3 常用运算符类型运算符描述算术运算符+、*、/、%实现数学上的基本算术运算功能逻辑运算符 &、|、!与布尔类型操作数组成逻辑表达式位运算符&、|、用于修改一个变量的二进制格式数据中单独的位字符串连接运算符+实现字符串串联增量和减量运算符+、自增自减运算,分为前缀和后缀运算移位运算符 根据
17、表达式规定的位数进行左移或右移,并将结果赋给操作数变量比较运算符 =、!=、=实现两个操作数的比较操作赋值运算符 =、+=、=、*=、/=、%=、&=、|=、=、=包括简单赋值和复合赋值运算,且左操作数必须是一个变量成员访问运算符 .用于对象和结构成员的访问索引运算符 用于数组和索引器数据类型转换运算符 ()用于实现显式类型转换条件运算符 ?:三元运算符对象创建运算符new用于动态创建对象和调用构造函数类型信息运算符 sizeof、is、typeof、assizeof只用于不安全的代码溢出异常控制运算符 checked、unchecked2.4 流程控制顺序结构选择结构循环结构跳转语句选择结构
18、if-else语句if(表达式)elseswich语句swich(表达式)case 常量表达式1:语句;break;default:语句;break;循环结构Whileint i=0,sum=0;while(i=100)i+;sum+=i;do-whileForint sum = 0; for (int i = 1; i = 100; i+)sum += i;Foreachchar A = 1,2,3,4,5; foreach (char t in A)Console.WriteLine(t);跳转语句break语句:跳出swich结构,嵌套时只能跳出一层continue语句:跳出本次循环中尚
19、未执行的语句return语句:退出类的方法,返回调用者,可返回值异常类型描述Exception 所有异常的基类SystemException 所有运行时生成的错误的基类IndexOutOfRangeException 仅当错误地对数组进行索引时,才由运行库引发NullReferenceException 仅当引用空对象时,才由运行库引发AccessViolationException 仅在访问无效内存时由运行库引发InvalidOperationException 当处于无效状态时,由方法引发ArgumentException 所有参数异常的基类ArgumentNullException 由不
20、允许参数为空的方法引发ArgumentOutOfRangeException 由验证参数是否位于给定范围内的方法引发ExternalException 在运行库的外部环境中发生或针对这类环境的异常的基类COMException 封装 COM HRESULT 信息的异常SEHException 封装 Win32 结构化异常处理信息的异常 C#中的异常处理提供了一种处理系统级错误和应用程序级错误的结构化的、统一的、类型安全的方法。程序运行过程中所产生的异常一般可以分为两种类型:用户程序产生的异常和系统产生的异常。2.5 异常处理try-catch-finally语句tryConsole.Write
21、Line(try);catch(Exception e)Console.WriteLine(“catch);finallyConsole.WriteLine(finally);第三章 类和对象基本概念将客观世界中的对象模型化,形成一种计算机化的表示,并以此为基础来分析和解决问题便形成了面向对象技术。对象对象是对客观事物的抽象对象由属性和方法组成。属性反映了对象的信息特征,而方法则定义改变属性状态的各种操作。类具有相同属性和方法的对象可归纳成类,对象是类的一个实例,而对象的抽象是类。继承类有一定的结构,可以派生出子类,子类除了继承父类的属性和方法外还可以有自己的属性和方法。类是C#中最基础的类型
22、。类是一个数据结构,将数据成员(状态)和功能成员(行为)组合在一个单元中,进而体现了面向对象技术的封装性。定义格式:Attribute 类修饰符 class 类名 :基类和实现的接口列表 类成员定义类的定义修饰符描述none、internal类只能在当前项目中访问public类可以在任何地方访问abstract、internal abstract类只能在当前项目中访问,且不能实例化,只能继承public abstract 类可以在任何地方访问,且不能实例化,只能继承sealed、internal sealed类只能在当前项目中访问,且只能实例化,不能继承public sealed类可以在任何地
23、方访问,且只能实例化,不能继承类成员的可访问性可访问性描述public访问不受限制,定义的成员可以在类的外部访问protected访问仅限于包含类或从包含类派生的类internal访问仅限于当前程序集(包)protected internal访问仅限于从包含类派生的当前程序集(包)或类private访问仅限于包含类类的成员类的成员分为数据成员和功能成员数据成员包括:成员常量,代表与类相关的常数数据;字段,类的变量。功能成员包括:方法,即类中的成员函数;属性,定义了命名的属性以及读写属性的相关的行为;索引,允许类的实例通过与数组相同的方法来索引;操作符,定义了可以用于类的实例上的表达式操作;事件
24、,定义了由类产生的事件公告;构造函数,对类的实例进行初始化的操作;析构函数,在类的实例销毁前执行与资源释放相关的操作。封装 encapsulation 什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。私有数据方法方法数据对象A对象B公有数据静态成员和非静态成员 类的成员可以是静态成员,也可以是非静态成员。静态成员用关键字static修饰,它们属于类。没有用static修饰的类成员称为非静态成员,它们属于对象。静态成员的特征:一个静态字段对应一个存储位置静态成员属于类,因此可以在包含类的实例之
25、间共享它们静态成员一般通过类来访问(非静态成员通过包含类的实例来访问)注意:区别理解“类”以及“类的实例(即对象)”构造函数与析构函数构造函数的名称与类名相同,没有返回类型。类在实例化的时候,调用构造函数析构函数在类析构时被调用(不能显式调用)成员字段,即类的变量,类中的数据成员,用来存储类所需的数据信息。class CalendarDate public readonly int month; /只读字段,实例创建后不能对其赋值 public int day; public static int year=2005; /静态字段,属于类的成员属性是对对象或类的字段进行特定访问的成员,是字段的
26、自然扩展,访问属性和字段的语法相同。public string NameListTile /读写属性 get return namelisttile; set namelisttile = value; 索引一种使对象能够用与数组相同的方式进行索引的成员。继承与多态在C#中,派生类只能从一个基类中继承修饰符 class 派生类名 :基类名派生类成员派生类能从它的直接基类中继承的成员包括方法、字段、属性、事件、索引(除了构造函数和析构函数)在派生类中声明与基类的同名成员,可以实现覆盖C#的多态性基类的虚拟方法与派生类的重载方法(abstact)抽象类与抽象方法;(sealed)密封类与密封方法类
27、设计原则对真实世界系统建模将数据和行为封装到对象中,类能够对真实对象以及与其它对象之间如何交互进行建模明确公共接口最小公共接口;隐藏实现;设计健壮的构造函数(和析构函数)应当将对象置于一种安全的初始状态在类中设计错误处理以合作为出发点,“任何类都不可能是孤岛”考虑重用和可扩展性移出不可移植的代码;让作用域尽可能小;提供复制和比较对象的方法;类要对自己负责第四章 Windows编程及多文档窗体Windows窗体应用程序模型窗体Form类是在应用程序中显示的任何窗口的表示形式。当为应用程序设计用户界面时,首先创建一个从Form派生的类。然后添加控件、设置属性、创建事件处理程序以及向窗体添加编程逻辑
28、。控件添加到窗体中的每个组件称为控件。事件Windows窗体编程模型基于事件。事件(Event)“事件”是当对象发生某些事情时,向其他对象提供通知的一种方法。在C#中是通过委托(delegate)实现的。事件有两个角色:事件发送方,指触发事件的对象事件接收方,指注册想在某种事件发生时被通知的对象Windows窗体的常用属性属性说明Name设置控件的名称AcceptButton设置当用户按Enter键时所单击的窗体上的按钮ActiveMdiChild获取当前活动的多文档界面(MDI)子窗体BackgroudImage设置在控件中显示的背景图像CancelButton设置当用户按Esc键时所单击的
29、窗体上的按钮ContextMenu设置与控件关联的快捷菜单Cursor设置当鼠标指针位于控件上时显示的光标HelpButton设置是否在窗体的标题栏中显示“帮助”按钮Icon设置窗体的显示图标IsMdiChild设置窗体是否为多文档界面(MDI)子窗体IsMdiContainer设置窗体是否为多文档界面(MDI)子窗体的容器MaximizeBox设置是否在窗体的标题栏中显示最大化按钮MinimumSize设置是否在窗体的标题栏中显示最小化按钮Text设置窗体显示的标题Windows控件(Button)的常用事件名称说明Click在单击 Button 时发生。 GotFocus在此元素获得逻辑焦
30、点时发生。 Initialized初始化此 FrameworkElement 时发生。 IsEnabledChanged在此元素的 IsEnabled 属性值更改时发生。 IsVisibleChanged在此元素的 IsVisible 属性值更改时发生。 KeyDown在焦点位于此元素上并且用户按下键时发生。 KeyUp在焦点位于此元素上并且用户释放键时发生。 LostFocus在此元素丢失逻辑焦点时发生。 MouseDown在指针位于此元素上并且按下任意鼠标按钮时发生。 MouseEnter在鼠标指针进入此元素的边界时发生。 MouseLeave在鼠标指针离开此元素的边界时发生。 Mouse
31、LeftButtonDown在鼠标指针位于此元素上并且按下鼠标左键时发生。 MouseRightButtonDown在鼠标指针位于此元素上并且按下鼠标右键时发生。 MouseUp在鼠标指针位于此元素上并且松开任意鼠标按钮时发生。 MouseWheel在鼠标指针位于此元素上并且用户滚动鼠标滚轮时发生。 TextInput在此元素以设备无关模式获取文本时发生。 TouchDown当悬停在此元素上方的手指触摸屏幕时发生。 TouchEnter在触摸屏输入从此元素边界外部移动到其内部时发生。 TouchLeave在触摸屏输入从此元素边界内部移动到其外部时发生。 常用控件标签控件(Label)为控件提供
32、运行时信息或说明性文字,通常用于显示静态文本。 文本框控件(TextBox)用于接收用户的输入或者显示文本。常用的事件是TextChanged事件,当框中的内容发生改变时触发列表框控件(ListBox)用于显示供用户选择的选项列表,用户可以从中选择一项或多项SelectedIndexChanged事件和SelectedValueChanged事件。组合框控件(ComboBox)结合了文本框控件和列表框控件的功能,同时具有这两类控件的功能命令按钮控件(Button)命令按钮控件允许用户通过单击来响应各种操作常用的事件是Click事件窗体切换与参数传递窗体的打开与关闭Form frm1=new Form();frm1.ShowDialog();/模态方式显示,有返回值frm1.Show();/非模态方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026边检协管员的面试题及答案
- 癌痛规范化治疗指南
- 2025年中国甲横酸达氟沙星市场调查研究报告
- 2025年中国特种胶市场调查研究报告
- 2025年中国游离脂肪酸试剂盒市场调查研究报告
- 2025年中国活甲鱼市场调查研究报告
- 2025年中国水终端处理器市场调查研究报告
- 2025年中国可拆式螺旋板换热器市场调查研究报告
- 2026北京公安局遴选面试题及答案
- 气道护理中的评估方法
- 2026年福建泉州市初二学业水平地理生物会考试卷题库及答案
- 2026年红塔证券股份有限公司招聘(39人)笔试参考题库及答案解析
- 2026四川省引大济岷水资源开发有限公司第二批次招聘68人考试备考试题及答案解析
- 2026年沈阳一模地理试卷及答案
- 2026年杭州市融资担保集团有限公司政策性担保业务试题及答案
- 国元证券股份有限公司招聘笔试题库2026
- 2026广东中山人才和数字集团有限公司下属中山人才科创投资有限公司招聘笔试参考题库及答案解析
- 2026年时事政治知识点梳理(高考)
- 2026中国金融监管科技发展现状与标准化建设及国际经验借鉴报告
- 网络安全舆情监测与处置手册
- 驻马店市2026乡村振兴专干招聘考试笔试题含本地三农政策
评论
0/150
提交评论