S2 C##学习总结
第一章:初识.NET框架
(1)CLR公共语言运行时 FCL框架类库 MSIL微软中间语言
CLS公共语言规范 CTS通用类型系统 JIT即时编译器
.NET框架的概念、组成
(2)回顾封装的概念和使用,回顾面向对象的概念和关系。
(3) 熟悉.NET框架类库中的常用类库及命名空间
例如:
using System.IO;
Using System.Windows.Forms;
Using System.Collections.Generic;
第二章:深入C#数据类型
(1)掌握C#基本数据类型
例如:
byte short int long float double char bool
(2)掌握值类型的概念、值类型数据在内存中的存储方式(了解),值类型数据类型有哪些。
例如:
值类型:基本数据类型、枚举enum、结构struct
引用类型:class类,string字符串,接口Interface,数组array,集合list
(3) 掌握引用类型的概念、引用数据类型在内存中的存储方式(了解),引用数据类型有哪些。
例如:
值类型数据在内存中都会单独分配存储空间,对一个值类型数据的修改不会影响另一个值类型数据。
引用数据类型在建立引用关系后,在内存中共用同一块存储空间。
(指向同一个内存地址),牵一发动全身。
(4) 区分值类型和引用类型
(5) 理解装箱和拆箱的概念
(6) 理解方法参数传递方式两种情况:值方式传递和引用方式ref传递的区别。
使用值方式(不含ref)传递值类型数据时,不会保留参数更新后的值。
使用值方式(不含ref)传递引用类型数据时,会保留参数更新后的值
使用饮用方式(ref)传递值类型或引用类型数据时,都会保留参数更新后的值
第三章:使用集合组织数据
(1) 集合的概念及优势
1ArrayList集合的特征及使用
添加add() 删除remove()/removeAt()/遍历for/foreach
(2)HashTable集合的特征及使用
添加add(K,V) 删除remove(key)/遍历foreach遍历keys或values
(3)非泛型集合ArrayList和HastTable对比
arrayList有序,可重复,可通过索引访问元素
hashTable无序,可重复,只能通过key访问value,存储的数据都是键值对。
(4)泛型集合List的理解和使用
泛型集合在定义时限定了集合中的数据类型,保证数据类型安全,提高性能。获取集合元素不需要装箱拆箱。
(5)泛型集合Dictionary
用法类似于hashTable,也是通过key访问value
但是不用装箱拆箱
(6)了解泛型类的概念
(7)泛型集合和非泛型集合的区别
泛型集合定义时就限定了集合中的数据类型,费泛型集合中存储的数据默认都是object需要装箱拆箱。
第四章:深入类的方法
1.理解构造方法的概念、特征以及使用场合
构造函数特点:
方法名和类名相同
没有返回值,不能加void
一般是用于初始化对象
2.理解方法重载的概念、特征以及使用场合
方法重载特点:
同一个类中,方法名称相同,参数不同(参数类型不同或参数数量不同)的方法就是方法重载。
3.理解对象交互的概念和交互过程
第五章:项目案例——体检套餐管理系统
集合、构造函数、窗体基本控件的使用、泛型集合的使用、对集合数据进行增删改查
第六章:初识继承和多态
1.继承的概念和优点
继承就是通过建立类和类之间的继承关系,从而轻松实现代码复用
2.继承的特性
单根性:一个类只能有一个直接父类
传递性:A:B,B:C,则A:C
可替代性:子类可以替代父类。
3.子类和父类的联系以及方法调用
子类可以调用父类public\protected属性和方法以及构造函数
4.base关键字的使用
base关键字代表当前类的父类对象的引用,使用base可以调用父类的公开和受保护的属性方法和构造函数。
5.protected访问修饰符的适用范围
使用protected修饰符修饰的受保护成员只能在当前类和当前类的 子类中使用。
6.public\private\protected区别
使用Public修饰的成员可以在其他类使用
使用private修饰的成员只能在当前类使用
使用Protected修饰的成员只能在当前类和当前类的子类中使用
7.继承关系下构造函数的调用和执行过程
如果在子类构造函数中没有使用base调用父类的构造函数,也没有使用this调用子类本类的构造函数,默认先调用父类的无参构造函数。如果使用base指定调用父类的某一个带参构造函数,则不再调用父类无参构造函数。在多级继承关系中,可以向更高一级的父类应用以上两条规则。
8.多态的概念
多态指的是多种形态,指同一个方法作用于不同对象时,产生不同的执行结果。
9.多态和继承的联系
没有继承就没有多态,继承和多态息息相关。
10.使用虚方法实现多态
例如:
访问修饰符 virtual 返回值类型 方法名(参数列表)
{
方法体
}
11.实现多态的步骤
父类中定义虚方法
例如:
访问修饰符 virtual 返回值类型 方法名(参数列表)
{
方法体
}
子类通过override重写父类虚方法
例如:
访问修饰符 override 返回值类型 方法名(参数列表)
{
方法体
}
注意:重写方法和被重写方法的返回值、方法名、参数列表必须一致。
12.方法重载和方法重写的区别
方法重载发生在同一个类中,可以看成是多态的一种表现形式。
方法重写发生在建立了继承关系的子父类中。
第七章:深入理解多态
1.子类可以替代父类,并且能够出现在父类能够出现的任何位置。但是父类对象是不能替代子类对象的。
2.依据里氏替换原则进行合理的程序设计
3.抽象类的概念
例如:
访问修饰符 abstract class 类名
{
}
4.抽象方法的概念
例如:
访问修饰符 abstract 返回值类型 方法名(参数列表);
注意:抽象方法只有定义,没有方法体。
5.抽象类和抽象方法的特征
抽象类不能实例化,不能使密封的或静态的。
抽象方法只有定义,没有方法体,抽象方法必须被其所在抽象类的非抽象子类重写,否则该子类还是一个抽象类。
抽象类中可以有零个到多个抽象方法,也可以有其他方法。
但是含有抽象方法的类必须定义为抽象类。
6.抽象方法和虚方法的区别
抽象方法 虚方法
Abstract virtual
必须被子类override 可以被子类override
没有方法体 必须有方法体
只能出现在抽象类中 可以出现在除密封类以外的任意其他类中
7.使用抽象方法实现多态
父类定义为抽象类,定义抽象方法,子类继承抽象类并实现抽象方法
第八章:可扩展标记语言XML
1.XML语言的特点和作用
特点:
XML语言使用节点组织数据。存储数据,区分大小写。节点必须成对出现。
HTML语言不区分大小写,不是所有标签必须成对出现。
2.XML语言和HTML语言的区别
3.对XML文件进行读取
例如:
XmlDocument document=new XmlDocument();
document.Load(“XMLPath”);
XmlNode/XmlElement node=document.DocumentElement;
Foreach(XmlNode n in node.ChildNode)
4.根据OOP思想熟练编写XML文件
5.TreeView动态增删节点
This.tv.Nodes.Add();
This.tv.selectedNode.remove();
6、将xml文件读取并展示在控件上
第九章:文件操作IO
1.操作文件的步骤
引入命名空间 using System.PP;
创建文件流
创建阅读器或写入器
执行读写操作
关闭阅读器或写入器
关闭文件流
2.文件流FileStream的使用
例如:
FileStream fs=new FileStream(“path”,FileMode.mode);
3.读写器StreamWriter/StreamReader的使用
例如:
StreamWriter sw=new StreamWriter(fs);
StreamReader sr=new StreamReader(fs,Encoding.Default);
4.处理中文乱码Encoding静态类
常用取值
UTF-8/Default/Unicode/GB2312
5.文件模式FileMode枚举
Create创建或改写
CreateNew创建新文件,已存在报异常
Open 打开已存在文件,不存在报异常
OpenOrCreate 存在就打开,不存在就创建
Append追加内容
6.静态类和非静态类的区别
静态类使用static修饰,只能包含静态成员,不能实例化,不能包含实例构造函数,使用类名调用静态成员
非静态类可以包含静态成员,也可以包含实例成员,可以包含实例构造函数,使用实例对象调用非静态成员
7.静态成员和实例成员的概念
例如:
静态方法不能直接调用实例方法
实例方法可以调用静态方法
静态成员不能直接访问实例成员
实例成员可以通过类名访问静态成员
8.静态类File操作文件
9.可实例化类FileInfo操作文件
10.静态类Directory类操作目录
11.可实例化类DirectoryInfo类操作目录