总复习 C#&.Net
大纲 .Net框架 VS.Net开发环境 C#基础知识 实现OOP 继承和多态 属性、索引器、委托、事件 WinForm基础知识 调试和异常 多线程 集合 文件
第一阶段 .NET Framework 的体系结构 VC++.Net C# VB.Net VJ# … .Net Framework 类库 (FCL) 公共语言运行时 (CLR) 操作系统
.NET Framework 的组件 .Net Framework .Net Framework 类库 CLR Web Forms Web Services WinForms ASP.NET ADO.Net 和 XML 类 基本框架类 CLR CLS CTS
第三阶段 C# 的基础知识 C# 中的数据类型分为两个基本类别 值类型 引用类型 表示实际数据 只是将值存放在内存中 值类型都存储在堆栈中 int、char、枚举、结构 引用类型 表示指向数据的指针或引用 包含内存堆中对象的地址 为 null,则表示未引用任何对象 类、接口、数组、字符串
装箱和拆箱 2-1 装箱是将值类型转换为引用类型 拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与 Object 类型的值相互转换,将值类型与引用类型链接起来
枚举 枚举(Enum,Enumerator 的缩写)是一组已命名的数值常量 用于定义具有一组特定值的数据类型 枚举以 enum 关键字声明 public class Holiday { public enum WeekDays Monday, Tuesday, Wednesday, Thursday, Friday } public void GetWeekDays (String EmpName, WeekDays DayOff) //处理工作日 static void Main() Holiday myHoliday = new Holiday(); myHoliday.GetWeekDays ("Richie", Holiday.WeekDays.Wednesday); Wednesday = 2
结构类型初步 定义: struct Point_self { short x,y; } struct RectArea { Point_self LeftTop; Point_self RightBottoms; public void Drawing(){ } } 引用分量 p1.x=5; p1.y=10; p2.x=p1.x; p2.y=p1.y+5; 说明职员信息的结构
类初步 C#的所有代码都是在某一个类中 对于对象的操作全部通过引用进行 struct Point_self { short x,y; } class RectArea { Point_self LeftTop; Point_self RightBottoms; public void Drawing(){ } }
结构和类的比较 有默认的构造函数 没有默认的构造函数 有析构函数 没有析构函数 必须使用new初始化 可以不使用new初始化 可以被继承 不能被继承 堆中(引用类型) 栈中(值类型) 类 结构
第四阶段 实现OOP 修饰符 说明 public internal protected private 所属类的成员以及非所属类的成员都可以访问 internal 同一程序集可以访问 protected 所属类或派生自所属类的类型可以访问 private 只有所属类的成员才能访问
方法重载 重载方法有两种方式 指定不同个数的参数 指定不同类型的参数 public void AreaCal(int radius) public void AreaCal(int length, int breadth) public void AreaCal(int radius) public void AreaCal(string shapeName)
操作符重载 重载操作符意味着使该操作符具有不同的行为 使用操作符可以使方程式简单易懂 语法:访问修饰符 static 返回类型 operator 被重载操作符(参数列表) … // 第 1 行 int result = Decimal.Add(54, 200); // 第 2 行 int result2 = 54 + 200;
命名空间 6-4 语法 namespace 命名空间的名称 { // 该名称空间的所有类都放在这里。 } 在声明命名空间时前面不应加任何访问修饰符
程序集 .net生成的有两种类型的文件(*.exe,*.dll)。 *.exe文件代表应用程序,*.dll代表类库,不管是*.exe还是*.dll都是程序集。 程序集是.net生成文件的统称,程序集是构成逻辑功能单元的类型和资源的集合。
第五阶段 继承 X 不允许多重继承 允许多重接口实现 public class Graduate: Student, Employee { // 成员变量 // 成员函数 } 允许多重接口实现
:base 关键字将调用 Person 类构造函数 public class Student:Person { private uint id; //调用 Person 构造函数 public Student(string name,uint age,uint id):base(name,age) this.id = id; Console.WriteLine(id); } :base 关键字将调用 Person 类构造函数
关键字 new 相同字段 隐藏继承成员 //要求 new 访问修饰符 new //将执行派生类的变量 将输出派生类中的 val
关键字virtual & override 基类 派生类 Class Base { // 成员变量 int basevar; // 成员函数 // 成员变量 int basevar; // 成员函数 public virtual void GetInfo() // 定义 } ……. base 方法的新实现 Class Derived : Base { // 成员变量 int derivedvars; // 成员函数 public override void GetInfo() // 定义 } …….
抽象类和抽象方法 2-1 访问修饰符 abstract class ClassOne { //类实现 } 不能实例化 派生类的基类
接口 4-4 public interface IPict { int DeleteImage(); void DisplayImage(); } 无访问修饰符 示例中的 IPict 接口用于演示接口
第六阶段 [access_modifer] datatype PropertyName { get{ }; set{ }; } 读/写属性 可以赋值和检索值
索引器 语法 [access_modifer]type this[datatype identifier] { get{}; set{};
委托 委托和方法必须具有相同的签名 可以引用任何方法,将在运行时决定 Multiply(int,int) { …. } --- Divide(int,int) --- public delegate Call(int num1, int num2); 委托和方法必须具有相同的签名
事件 public delegate void delegateMe(); 语法 [访问修饰符] event 委托名 事件名; public delegate void delegateMe(); private event delegateMe eventMe;
第七阶段 WinForms基础知识 WinForms可用于 Windows 窗体应用程序开发 Windows 窗体控件是从 System.Windows.Forms.Control 类派生的类 标签控件用于显示用户不能编辑的文本或图像 按钮控件提供用户与应用程序交互的最简便方法 组合框控件是列表框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选择项目 窗体提供了收集、显示和传送信息的界面,是 GUI的重要元素 消息框显示消息,用于与用户交互
第八阶段 WinForms控件 WinForms单选按钮控件允许用户进行设置 WinForms的图片框控件允许用户在窗体上添加和显示位图、元文件、JPEG、GIF 或 PNG 等格式的图形 WinForms的选项卡控件将类似的功能集中在一起,放在一个对话框或窗口中 WinForms的 HScrollBar 和 VScrollBar 用作水平和垂直滚动条,分别以水平和垂直方式浏览(或滚动)整个文档 进度条控件用于指示操作的进度,并显示排列在水平条中一定数目的矩形,通常通过在程序中设置其Value值来显示任务完成的百分比
第九阶段 调试是搜寻和消除应用程序中的错误的过程 语法错误表示编译器无法理解代码 调试模式可用来重复编译和排除应用程序中的错误,直至能够成功运行 “局部变量”窗口允许用户监控当前程序中所有变量的值 单元测试和集成测试是测试大型应用程序的常用技术 当应用程序遇到运行时错误时,就会引发异常 C# 中的所有异常都派生自 Exception 类
第十阶段 Thread 引用System.Threading 命名空间 只创建但不启动线程 线程实例名.Start(); ThreadStart 线程启动委托名 = new ThreadStart(方法名) Thread 线程实例名 = new Thread(线程启动委托名 ); 运行在线程上的方法 只创建但不启动线程 线程实例名.Start();
Thread 类的属性和方法 2-2 属性 CurrentThread IsAlive Name Priority ThreadState Sleep() Start() Join() Abort() Interrupt() Suspend() Resume() 静态 静态
线程的生命周期 未开始 开始,Start 已开始 恢复 正在运行 中断,Interrupt 挂起,Suspend 加入,Join 休眠,Sleep 停止,Abort 已中断 已停止 挂起 加入 休眠 继续,Resume
调度线程 2-2 ThreadPriority 枚举 成员 说明 AboveNormal 安排在优先级为 Highest(最高)的线程之后,以及优先级为 Normal(普通)的线程之前。 BelowNormal 安排在优先级为 Normal(普通)的线程之后,以及优先级为 Lowest(最低)的线程之前。 Highest 安排在任何其他优先级的线程之前。 Lowest 安排在任何其他优先级的线程之后。 Normal 安排在优先级为 AboveNormal 的线程之后,以及在优先级为 BelowNormal 的线程之前。默认情况下,线程的优先级为 Normal(普通)。
线程同步:lock语句 lock语句的语法: lock语句的功能: 对象锁机制保证了对象访问的完整性:只有一个线程完成操作后,其它线程才能进行操作。 一般情况下,当一个线程写某个变量,而同时可能有其他线程读或写这个变量时,应该使用对象锁机制。
线程安全性 线程安全 线程安全性就是保护类的成员和代码的安全,从而使它们不会同时被几个线程中断 如果类中的成员和代码受到保护而不会被几个线程中断,则这个类称为线程安全的类 void DoTask() { lock(this) ... } 线程安全
十一阶段 System.Array 对象 集合对象的特点和优点 System.ArrayList 对象 哈希表对象
十二阶段 文件处理 IO 命名空间包含便于在数据流和文件中读取和写入数据的类 类名 功能和用途 Directory、File、DirectoryInfo以及FileInfo 创建、删除并移动目录和文件,通过属性获取特定目录和文件的相关信息 Stream 所有流的抽象基类。流是字节序列的抽象概念 BinaryReader、BinaryWriter 读写二进制数据 StreamReader 、StreamWriter 读写文本数据信息