1. 进程类process
2. 使用控制台打开文件案例
1)类的设计
父类CommonFile 属性:存储文件名 方法:打开文件的抽象方法OpenFile
子类TxtFile 构造函数:在创建TxtFile这个对象的时候,传入文件名
重写父类的抽象方法:OpenFile() 根据用户输入的磁盘路径以及文件名
通过进程类process去打开制定的文件
子类AviFile
2) 简单工厂的设计
写了一个静态方法,根据用户输入的文件名的后缀名,去创建不同的对象
由于不知道用户会输入什么类型的文件,所以在这个方法中返回的是父类类型
但父类里面装的是子类对象
3. 单例模式
只能创建一个对象
4. .NET Reflector 反编译器
ILSpy_Master
5. 静态和非静态
1) 在一个类中,如果既有静态成员,也有非静态成员,则首先初始化静态成员,并且只是初始化一次
不管你有多少个对象,都只初始化一次
2) 在整个项目当中静态成员是资源共享的(内存中存储在静态存储区)
3) 静态成员只有在整个项目都结束的时候,才释放资源
6. 索引器:方便去使用类中的集合 通过给类赋值,实际上给类中的集合赋值
7. 委托:
想把一个方法作为参数传给另一个方法时,就是把这个方法作为委托类型
委托就是创建委托对象去指向一个方法
声明的委托必须跟指向的方法具有同样的签名(返回值和参数类型相同)
多播委托:一个委托指向多个方法 调用时一块儿调用 += -=
8. 匿名函数--就是只使用一次的函数,无需函数名
delegate(参数){} 要使用委托变量指向匿名函数
9. lamda表达式--本质上就是匿名函数 -- 使用委托的地方就可以使用lamda表达式
泛型委托?? Predicate<T> Comparison<T>
List<int> list = new List<int>();
list.RemoveAll(n=>n>2) --Lamda表达式 作为委托 表示条件
10. 使用委托实现两个窗体传值
把委托作为构造函数的参数,这样在Form1窗体中创建Form2窗体对象的时候,
就可以把Form1中的函数传递给Form2,从而实现在Form2中调用方法来控制Form1的显示
使用事件实现两个窗体传值
11. XML:存储数据,小型的数据库
节点 元素
XML有且只能有一个根节点
使用命名空间using System.Xml;
//在内存中创建一个XML文档对象
XmlDocument doc = new XmlDocument();
//创建了第一行 XML声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//创建根节点
XmlElement books = doc.CreateElement("Books");
doc.AppendChild(books);
//给根节点再添加子节点
XmlElement book = doc.CreateElement("Book");
books.AppendChild(book);
XmlElement orderItem1 = doc.CreateElement("OrderItem");
//给标签设置属性并且给属性设值
orderItem1.SetAttribute("Name", "wawa");
orderItem1.SetAttribute("Count", "5");
items.AppendChild(orderItem1);
//保存Xml文件
doc.Save("new.xml");
2. 使用控制台打开文件案例
1)类的设计
父类CommonFile 属性:存储文件名 方法:打开文件的抽象方法OpenFile
子类TxtFile 构造函数:在创建TxtFile这个对象的时候,传入文件名
重写父类的抽象方法:OpenFile() 根据用户输入的磁盘路径以及文件名
通过进程类process去打开制定的文件
子类AviFile
2) 简单工厂的设计
写了一个静态方法,根据用户输入的文件名的后缀名,去创建不同的对象
由于不知道用户会输入什么类型的文件,所以在这个方法中返回的是父类类型
但父类里面装的是子类对象
3. 单例模式
只能创建一个对象
4. .NET Reflector 反编译器
ILSpy_Master
5. 静态和非静态
1) 在一个类中,如果既有静态成员,也有非静态成员,则首先初始化静态成员,并且只是初始化一次
不管你有多少个对象,都只初始化一次
2) 在整个项目当中静态成员是资源共享的(内存中存储在静态存储区)
3) 静态成员只有在整个项目都结束的时候,才释放资源
6. 索引器:方便去使用类中的集合 通过给类赋值,实际上给类中的集合赋值
7. 委托:
想把一个方法作为参数传给另一个方法时,就是把这个方法作为委托类型
委托就是创建委托对象去指向一个方法
声明的委托必须跟指向的方法具有同样的签名(返回值和参数类型相同)
多播委托:一个委托指向多个方法 调用时一块儿调用 += -=
8. 匿名函数--就是只使用一次的函数,无需函数名
delegate(参数){} 要使用委托变量指向匿名函数
9. lamda表达式--本质上就是匿名函数 -- 使用委托的地方就可以使用lamda表达式
泛型委托?? Predicate<T> Comparison<T>
List<int> list = new List<int>();
list.RemoveAll(n=>n>2) --Lamda表达式 作为委托 表示条件
10. 使用委托实现两个窗体传值
把委托作为构造函数的参数,这样在Form1窗体中创建Form2窗体对象的时候,
就可以把Form1中的函数传递给Form2,从而实现在Form2中调用方法来控制Form1的显示
使用事件实现两个窗体传值
11. XML:存储数据,小型的数据库
节点 元素
XML有且只能有一个根节点
使用命名空间using System.Xml;
//在内存中创建一个XML文档对象
XmlDocument doc = new XmlDocument();
//创建了第一行 XML声明
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(dec);
//创建根节点
XmlElement books = doc.CreateElement("Books");
doc.AppendChild(books);
//给根节点再添加子节点
XmlElement book = doc.CreateElement("Book");
books.AppendChild(book);
XmlElement orderItem1 = doc.CreateElement("OrderItem");
//给标签设置属性并且给属性设值
orderItem1.SetAttribute("Name", "wawa");
orderItem1.SetAttribute("Count", "5");
items.AppendChild(orderItem1);
//保存Xml文件
doc.Save("new.xml");