第9章:网络编程
第9章:网络编程
本章目标
熟悉网络编程相关协议
了解TCP协议 的通信原理
了解UDP协议的通信原理
掌握基于Socket 方式的网络编程
本章内容相关概念协议TCP协议:
TCP是一种面向连接的、可靠的,基于字节流的传输层通信协议。为两台主机提供高可靠性的数据通信服务。它可以将源主机的数据无差错地传输到目标主机。当有数据要发送时,对应用进程送来的数据进行分片,以适合于在网络层中传输;当接收到网络层传来的分组时,它要对收到的分组进行确认,还要对丢失的分组设置超时重发等。为此TCP需要增加额外的许多开销,以便在数据传输过程中进行一些必要的控制,确保数据的可靠传输。因此,TCP传输的效率比较低。
UDP协议:
UDP是一种简单的、面向数据报的无连接的协议,提供的是不一定可靠的传输服务。所谓“无连接”是指在正式通信前不必与对方先建立连接,不管对方状态如何都直接发送过去。这与发手机短信非常相似,只要知道对方的手机号就可以了,不要考虑对方手机处于什么状态。UDP虽然不能保证数据传输的可靠性,但数据传输的效率较高。
IPIP是Internet Protocol(网际互连协议)的缩 ...
第8章:多线程
第8章:多线程
本章目标
理解并熟练使用多线程
本章内容基本概念进程
当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。 而一个进程又是由多个线程所组成的。
线程
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
句柄句柄是Windows系统中对象或实例的标识,这些对象包括模块、应用程序实例、窗口、控制、位图、GDI对象、资源、文件等。
多线程-ThreadThread类Thread类是是控制线程的基础类,位于System.Threading命名空间下,具有4个重载的构造函数:
名称
说明
Thread(ThreadStart start)
初始化Thread类的实例,要执行的方法是无参的。
Thread(ThreadStart start, int maxStackSize)
初始化Thread类的实例,指定线程的最大堆栈大小。
Thread(ParameterizedThreadStart start)
初始化Thread类的实例 ...
第6章:Lambda表达式
第6章:Lambda表达式
本章目标
为什么要学习C#编程语言
了解C#相关常识
C#开发工具Visual Studio安装
掌握C#程序的开发步骤
掌握C#的注释
掌握C#的常用转义符
本章内容lambda表达式演变史C# 匿名函数的演变历史可以追溯到 C# 语言的不同版本,随着语言特性的不断丰富和发展,匿名函数经历了以下几个主要阶段:
C# 1.0在 C# 1.0 中,虽然还没有直接支持匿名函数的概念,但已经引入了委托(Delegate)这一关键概念。委托允许将方法作为参数传递或存储为变量,为后续匿名函数的引入奠定了基础。在这个版本中,若要创建委托实例,必须先定义一个具有匹配签名的方法,然后使用该方法的名称来初始化委托。
123456789public delegate int MyDelegate(int x, int y);public static int AddNumbers(int a, int b){ return a + b;}MyDelegate add = new MyDelegate(AddNumbers);
C# ...
第7章:初识Linq
第7章:Linq
本章目标
掌握Linq的运用
本章内容Linq概述什么是LinqLanaguage Interated Query(语言集成查询),Linq 是集成C# 和VB这些语言中用于提供数据查询能力的一个新特性。Linq用于以对象形式管理关系数据,并提供了丰富的查询功能。
LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询。用于保存和检索来自不同数据源的数据,从而消除了编程语言和数据库之间的不匹配,以及为不同类型的数据源提供单个查询接口。
LINQ总是使用对象,因此你可以使用相同的查询语法来查询和转换XML、对象集合、SQL数据库、ADO.NET数据集以及任何其他可用的LINQ提供程序格式的数据。
LInq支持的数据源
LINQ to Objects 主要负责对象的查询。
LINQ to XML 主要负责XML的查询。
LINQ to ADO.NET 主要负责数据库的查询。
LINQ to SQL
LINQ to DataSet
LINQ to Entities
Linq的优势1、熟悉的语言:开发人员不必为每种 ...
第4章:索引器
第4章:索引器
本章目标
了解索引器的原理
熟练使用索引器
本章内容索引器的概念 在 C# 中,索引器(Indexer)是一种特殊的属性,允许类的实例像数组一样通过索引访问。
索引器允许通过类实例的索引来访问该类的实例成员。它的声明类似于属性,但具有参数。通常情况下,索引器用于允许类的实例像数组一样通过索引进行访问。
索引器的语法12345678910111213141516public class MyClass{ // 声明一个索引器 public returnType this[indexType index] { get { // 返回索引位置的值 } set { // 设置索引位置的值 } }}
returnType: 索引器返回的数据类型,可以是任意有效的 C# 数据类型。
indexType: 索引的参数类型,可以是整数、 ...
第5章:事件与委托
第5章:事件与委托
本章目标
掌握委托的使用
掌握事件的使用
本章内容什么是委托委托是一种存储函数引用的类型,就像我们定义一个string str一样,这个str变量就是string类型。因为C#中没有函数类型,但是可以定义一个委托类型,把一个函数赋给这个委托,类似于C++中的函数指针 。
委托的定义与类的定义类似,先定义,再声明,再创建实例,再使用,定义时需要加上delegate关键字但是不需要函数体 。
与委托关联可以是任何类或者结构中的方法,可以是静态方法,只要是可以访问的方法都可以。创建一个委托类型使用关键字delegate(委托)
自定义委托
12345678910111213141516171819202122232425262728293031323334353637383940414243444546using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CH05Demo ...
第2章:泛型
第2章:泛型
本章目标
理解泛型的概念
掌握泛型方法的定义与使用
掌握泛型类的定义与使用
掌握泛型接口的定义与使用
本章内容泛型的概念 泛型(generic)是C# 2.0推出的新语法,并不是语法糖,它是专门为处理多段代码在不同的数据类型上执行相同的指令的情况而设计的。 即泛型让不同的数据类型支持相同的业务逻辑。
泛型是一个复合类型,把多个类型混合一起作用, 在C#中应用比较广的泛型:泛型方法,泛型类,泛型接口
泛型方法泛型方法:调用时泛型参数类型可以省略
泛型定义时,是延迟声明的:即定义的时候没有指定具体的参数类型,把参数类型的声明推迟到了调用的时候才指定参数类型。
12345678910111213141516171819202122232425262728/// <summary> /// 泛型方法 /// 求和 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t1& ...
第1章:特性
第1章:特性
本章目标
理解特性的概念
熟悉常用预定义特性
掌握自定义特性的运用
本章内容特性是什么特性的定义 特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。
特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。
特性其实就是一个类,直接或间接继承自Attribute
1234567891011121314151617181920212223242526272829303132333435#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framewo ...
第3章:反射
第3章:反射
本章目标
掌握反射的原理
熟悉反射的基本运用
本章内容反射是什么C# 编译运行过程
首先我们在VS点击编译的时候,就会将C#源代码编译成程序集
程序集以可执行文件 (.exe) 或动态链接库文件 (.dll) 的形式实现
程序集中包含有Microsoft 中间语言 (MSIL) 和必需的元数据。
元数据存储以下信息:
程序集的说明:标识(名称、版本、区域性、公钥)、导出的类型、该程序集所依赖的其他程序集、运行所需的安全权限。
类型的说明:名称、可见性、基类和实现的接口、成员(方法、字段、属性、事件、嵌套的类型)。
特性:修饰类型和成员的其他说明性元素。
在执行时,实时 (JIT) 编译器将 MSIL 转换为本机代码
运行 Microsoft 中间语言 (MSIL) 前,必须根据公共语言运行时将其编译为目标计算机基础结构的本机代码。
运行代码
公共语言运行时提供启用要发生的托管执行的基础结构以及执行期间可使用的服务
反射的工作原理反射 来自 System.Reflection命名空间,它可以读取程序集中的元数据, ...
第6章:队列
第6章:队列
本章目标
理解队列的定义及其基本运算
掌握顺序队列各种操作实现
本章内容队列
一种特殊的线性表
允许在一端进行插入,另一端进行删除
插入的一端称为队尾,删除的一端称为队头
插入元素称为入队,删除元素称为出队
若队列中没有任何元素,则称为空队列
例如:
超市排队交费
打印任务调度
队列的存储结构
顺序存储结构
称为“顺序队列”
是运算受限的顺序表
用一组连续的存储空间依次存放从队头到队尾的元素
使用一维数组实现
链式存储结构
顺序队列在容量为5的顺序队列中将J1-J3依次入队,然后J1出队
顺序队列的基本操作
队列的初始化
判断队列的状态(空或满)
入队
出队
查询队头对象
查询队列的元素个数
初始化1234567891011121314151617/// <summary>/// 初始化/// </summary>/// <param name="capacity"></param>public MyQueue(int capacity){ items = new ...