1.深入.NET框架
1.1:NET的优点:
1.1.1:提供面向对象的编程环境
1.1.2:对web应用的强大支持
1.1.3:对web Service的支持
1.1.4:实现SOA,支持云计算
1.1.5:支持构建.NET程序的炫彩外衣
1.2:.NET框架结构
1.2.1:.NET框架包括公共语言运行时(CLR),框架类库(.NET Framework类库,FCL)
1.2.2:.NET Framework是一个综合性的面向对象的可重用类型集合
1.2.3:.NET Framework类库引进的新特性
1.2.3.1:WPF,图形引擎
1.2.3.2:WCF,分布式计算
1.2.3.3:WF,工作流框架
1.2.3.4:Windows CardSpace:取代用户名和密码成为验证用户身份的新方法
1.2.3.5:LINQ:使用面向对象的语法为第三方数据源编写LINQ查询
1.2.4:.NET Framework的目的
1.2.4.1:提供一个一致的面向对象的编程环境
1.2.4.2:提供软件部署和版本冲突最小化的代码执行环境
1.2.4.3:提高执行安全性的环境
1.2.4.4:图标控件
1.2.4.5:SEO
1.2.4.6:输出缓存
1.2.5:公共语言运行时(CLR)由公共语言规范(CLS)和通用类型系统(CTS)
1.2.5.1:.NET的编译技术,通过JIT编译器转换成机器代码然后执行,从而实现了代码托管,也加强了程序的运行效率
1.2.5.2:通用类型系统(CTS):用于解决不同语言中语言数据类型不同的问题
1.2.5.3:公共语言规范(CLS):一种用于不同语言的最低的语言标准
1.2.6:框架类库(.NET Framework类库,FCL)核心类库,及功能
1.2.6.1:System:包含所有其他的命名空间
1.2.6.2:System.collections.Generic:支持泛型
1.2.6.3:System.IO:支持IO流
1.2.6.4:System.NET:支持网络编程
1.2.6.5:System.Data:提供ADO.NET结构类的访问
1.2.6.6:System.Windows.Forms:用于开发windows应用程序
1.2.6.7:System.Drawing:GDI+等图形操作
1.2.6.8:System.Data:ADO.NET技术
1.2.7:.Net框架---程序集的组成部分
1.2.7.1:程序集清单:
1.2.7.2:类型元数据
1.2.7.3:中间语言
1.2.7.4:资源
1.3:面向对象
1.3.1:类和对象
1.3.1:对象归纳成类,是归纳对象共性的过程
1.3.2:在类的基础上,将状态和行为实体化为对象的过程叫做实例化
1.3.3:封装的好处:
1.3.3.1:保证数据的安全性
1.3.3.2:提供清晰的对外接口
1.3.3.3:类内部实现可以任意更改,不影响其他类
1.3.4:类图的查看
1.3.4.1:类图中返回值与属性的格式:属性类型放在冒号后面,返回值类型在冒号后面
2.深入C#数据类型
2.1:值类型和引用类型
2.1.1:值类型--源于System.ValueType--每个值类型对象都有一个独立的内存区--内存区成为栈(Stack)
2.1.2:引用类型--源于System.object--引用类型是保存着一个地址,地址对应一个内存区
2.1.3:细分值类型和引用类型
值类型 |
基本数据类型 |
整形:Integer 长整型:long (单精度)浮点型:float 双精度:double 字符型:char 布尔型:boolean |
枚举类型 |
枚举类型:enum |
|
结构类型 |
结构:struct |
|
引用类型 |
类 |
基类:System.Object 字符串:String 自定义类:class |
接口 |
接口:interface |
|
数组 |
数组:int [].String [] |
2.1.4:结构:
2.1.4.1:定义结构
// 访问修饰符 关键字struct 结构名 public struct name { //结构体 }
2.1.4.2:结构的使用
2.1.4.2.1:可以不使用new,直接定义结构对象即可
2.1.4.2.2:声明结构对象后,必须给结构对象赋初始值
2.1.4.3:结构的使用经验:当对象需要较少的字段来表现时,可以使用结构
2.2:不同类型的参数传递
|
作为方法参数时 |
|
没有修饰符 |
有ref修饰符 |
|
值类型 |
在方法外部不能保存方法内对参数的修改 |
在方法外部可以保存方法内对参数的修改 |
引用类型 |
在方法外部可以保存方法内对参数的修改 |
3.使用集合组织相关数据
3.1:集合概述
3.1.1:ArrayList属于System.Collection命名空间
3.1.1.1:ArrayList常用方法和属性
属性名称 |
说明 |
|
|
count() |
获取集合中实际元素数 |
返回值类型 |
方法名称 |
说明 |
void |
Add(object obj) |
添加对象到集合的结尾处 |
RemoveAt(int index) |
移除指定索引处的元素 |
|
Remove(object obj) |
移除特定元素 |
|
Clear() |
移除所有元素 |
3.1.1.2:ArrayList中获取元素的方法也和数组一样通过索引(index)来访问
//创建集合 ArrayList list = new ArrayList() { new SE(){name="Demo1",Age=20}, new SE(){name="Demo2",Age=16}, } //通过下标来获取 SE se = (SE)list[0];
3.1.2:Hashtable属于System.Collection命名空间,是键值对储存
属性名称 |
说明 |
|
|
Count |
获取包含扎起Hashtable中键值对的数目 |
|
Keys |
获取包含在Hashtable中健的集合 |
|
Values |
获取包含在Hashtable中值的集合 |
返回值类型 |
方法名称 |
说明 |
void |
Add(object key,object value) |
将指定的键和对的元素添加到Hashtable中 |
Remove(object key) |
移除带有特定健的元素 |
|
Clear() |
移除所有元素 |
3.2:泛型和泛型集合
3.2.1:自己看书
4.深入类的方法
4.1:构造函数
4.1.1:构造函数的特点
4.1.1.1:方法名与类名相同
4.1.1.2:没有返回值类型
4.1.1.3:主要完成对象的初始化工作
4.2:方法重载
4.2.1:重载的特点:
4.2.1.1:方法名相同
4.2.1.2:发布方法的参数类型不同或者参数个数不同
4.2.1.3:在同一个类中
4.3:对象交互
4.3.1:万物皆对象,对象与对象互相独立,互不干涉.对象通过属性和方法进行交互.可以认为方法的参数和方法的返回值都是对象间相互传递的信息
5.初识继承和多态
5.1:继承概述
5.1.1:继承的目的:移除类的冗余代码
5.1.2:继承是面向对象中的重要特性
5.1.3:继承符合is a关系
5.1.4:base关键字和protected修饰符
5.2.4.1:base能在子类中调用父类非私有的属性和方法
5.2.4.2:protected修饰符,代表能在本类和子类中使用,其他类不能使用
5.1.5:可以在子类的构造函数中通过base关键字显示调用父类的构造函数
5.2:继承的使用
5.2.1:继承具有传递性,单根性
5.2.2:通过使用sealed关键字来修饰类不能被继承
5.2.3:is:可以判断左边的对象是否属于右边给定的类型,属于则返回true,不属于则返回false
List<SE> list = new List<SE>(); foreach(SE se in list) { if(se is SE) { Console.write("诶嘿"); } }
5.2.4:继承的价值:
5.2.4.1:模拟现实世界的关系,符合面向对象的编程规则
5.2.4.2:实现代码的重用
5.2.4.3:使程序结构,子类父类结构清晰
5.3:多态
5.3.1:通过重写来解决继承遗留的问题
5.3.1.1:通过virtual来定义虚方法
//访问修饰符 virtual 返回类型 方法名() { //方法体 }
5.3.1.1:通过override来重写虚方法
//访问修饰符 override 返回类型 方法名() { //方法体 }
6.深入理解多态
6.1:里氏替换原则
6.1.1:里氏替换原则:子类可以替换父类并且出现在父类能够出现的任何地方,且程序行为不会发生任何变化,同时父类不能替换子类
6.1.2:应用:
6.1.2.1:父类作为形参--子类作为实参
6.1.2.2:父类作为返回类型--子类作为返回值
6.1.2.3:声明父类new子类
6.2:抽象类和抽象方法
6.2.1:抽象类是一个宏观,抽象的概念,不是某一个具体的类
6.2.2:抽象类无法实例化
6.2.3:代码
// 访问修饰符 abstract关键字 class关键字 类名 public abstract class Demo { //访问修饰符 abstract关键字 返回值类型 方法名 public abstract void Show(); }
7.可扩展标记语言XML
7.1:XML概述
7.1.1:XML成为可扩展标记性语言.全称Extensible Markup Language.
7.1.2:操作XML:
对象 |
属性和方法 |
说明 |
XmlDocument |
属性:DocumentElement |
获取节点 |
属性:CHildNodes |
获取子节点 |
|
方法:Load() |
读取整个XML的结构 |
|
XmlNode |
属性:InnerText |
当前节点的值 |
属性:Name |
当前节点的名称 |
|
属性:childNodes |
当前节点的所有子节点 |
7.2:操作方法
7.2.1:
XmlDocument xmlDoc = new XmlDocument(); //加载Xml文件xmlDoc.Load("FullChanels.xml"); //获取根节点 XmlElement xmlRoot = xmlDoc.DocumentElement; //遍历Channel节点 foreach(XmlNode node in xmlRoot.childNodes) { console.write(node["NodeName"].InnerText); }
8.文件操作
8.1:文件概述
8.1.1:无
8.2:读写文件
8.2.1:IO五步骤,需要引入命名空间(System.Io)
8.2.1.1:创建文件流
8.2.1.2:创建阅读器或者写入器
8.2.1.3:执行读写操作
8.2.1.4:关闭阅读器或者写入器
8.2.1.5:关闭文件流
8.2.2:代码:写入
//文件路径 string path = "E:\"; //文件内容 string content = "内容" //创建文件流 FileStream fs = new FileStream(path,FileMode.Create); //创建写入器 //防止乱码,设置字符编码,也可以自定义Encoding.GetEncoding("Unicode") StreamWriter sw = new StreamWriter(fs,Encoding.Default); //将内容写入文件 sw.Write(context); //关闭写入器 sw.Close(); //关闭文件流 fs.Closw();
8.2.2.1:FileMode的值
模式 |
值 |
作用 |
追加 |
Append |
若存在文件,则打开该文件并查找到文件尾,或者创建一个新文件。这需要 Append 权限。FileMode.Append 只能与 FileAccess.Write 一起使用。试图查找文件尾之前的位置时会引发 IOException 异常,并且任何试图读取的操作都会失败并引发 NotSupportedException 异常。 |
新建/覆盖 |
Create |
指定操作系统应创建新文件。如果文件已存在,它将被覆盖。这需要 Write 权限。FileMode.Create 等效于这样的请求:如果文件不存在,则使用 CreateNew;否则使用 Truncate。如果该文件已存在但为隐藏文件,则将引发 UnauthorizedAccessException异常。 |
新建新的文件 |
CreateNew |
指定操作系统应创建新文件。这需要 Write 权限。如果文件已存在,则将引发 IOException异常。 |
打开 |
Open |
指定操作系统应打开现有文件。打开文件的能力取决于 FileAccess 枚举所指定的值。如果文件不存在,引发一个 FileNotFoundException 异常。 |
打开/新建 |
OpenOrCreate |
指定操作系统应打开文件(如果文件存在);否则,应创建新文件。如果用 FileAccess.Read 打开文件,则需要 Read权限。如果文件访问为 FileAccess.Write,则需要 Write权限。如果用 FileAccess.ReadWrite 打开文件,则同时需要 Read 和 Write权限。 |
清空文件 |
Truncate |
指定操作系统应打开现有文件。该文件被打开时,将被截断为零字节大小。这需要 Write 权限。尝试从使用 FileMode.Truncate 打开的文件中进行读取将导致 ArgumentException 异常。 |
8.2.3:代码:读取
//文件路径 string path = "E:\"; //文件内容 string content; //创建文件流 FileStream fs = new FileStream(path,FileMode.Open); //创建读取器 //防止乱码,设置字符编码,也可以自定义Encoding.GetEncoding("Unicode") StreamReader sr= new StreamReader(fs,Encoding.Default); //将内容读入content content = sr.ReadToEnd(); //关闭写入器 sr.Close(); //关闭文件流 fs.Closw();
8.2.3.1:StreamReader方法:
模式 |
值 |
作用 |
读取一行数据 |
ReadLine() |
从当前流中读取一行字符并将数据作为字符串返回。 |
从当前位置读到末尾 |
ReadToEnd() |
读取来自流的当前位置到结尾的所有字符。 |
关闭 |
Close() |
关闭 StreamReader 对象和基础流,并释放与读取器关联的所有系统资源。 |
8.3:文件和目录操作
8.3.1:静态类
8.3.1.1:File类官方链接
微软官方链接:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.file?view=netframework-4.8
8.3.1.1.1:摘要
返回值 |
方法名称 |
说明 |
bool |
Exists(String) |
确定指定的文件是否存在。 |
void |
Copy(String, String) |
将现有文件复制到新文件。 不允许覆盖同名的文件。 |
Move(String, String) |
将指定文件移到新位置,提供要指定新文件名的选项。 |
|
Delete(String) |
删除指定的文件。 |
8.3.1.2:Directory类官方链接
微软官方链接:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directory?view=netframework-4.8
8.3.1.2.1:摘要
返回值 |
方法名称 |
说明 |
bool |
Exists(String) |
确定给定路径是否引用磁盘上的现有目录。 |
void |
Move(String, String) |
将文件或目录及其内容移到新位置。 |
Delete(String) |
从指定路径删除空目录。 |
|
Delete(String, Boolean) |
删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。 |
8.3.2:非静态类
8.3.2.1:FileInfo类官方链接
微软官方链接:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.fileinfo?view=netframework-4.8
8.3.2.1.1:摘要
属性 |
说明 |
|
Exists |
获取指示文件是否存在的值 |
|
Extension |
获取表示文件扩展名部分的字符串。 |
|
FullName |
获取目录或文件的完整目录。 |
|
Name |
获取文件名。 |
|
返回值 |
方法名称 |
说明 |
FileInfo |
CopyTo(String) |
将现有文件复制到新文件,不允许覆盖现有文件。 |
void |
Delete(String) |
从指定路径删除空目录。 |
Delete(String, Boolean) |
删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。 |
|
MoveTo(String) |
将指定文件移到新位置,提供要指定新文件名的选项。 |
8.3.2.2:DirectoryInfo类官方链接
微软官方链接:https://docs.microsoft.com/zh-cn/dotnet/api/system.io.directoryinfo?view=netframework-4.8
8.3.2.2.1:摘要
返回值 |
方法名称 |
说明 |
DirectoryInfo[] |
GetDirectories() |
返回当前目录的子目录。 |
FileInfo[] |
GetFiles() |
返回当前目录的文件列表。 |
来源:https://www.cnblogs.com/PaulLai/p/11121630.html