第一讲:深入.NET框架
知识拓展:
线程睡眠:1.导入命名空间 System.Treading; 2.Thread.Sleed(毫秒);
.NET框架具有两个主要组件:公共语言运行时(CLR)与框架类库(.NET Framework类库,即FCL)。CLR是.NET框架的基础。CLS公共语言规范。
.NET框架核心类库及其功能:
1.System:此命名空间包含其他所有的命名控件。
2.System.Collections.Generic:支持泛型操作。
System.IO:支持对文件的操作,如复制、粘贴、删除以及对文件的读写等。
System.Net:支持对网络协议的编程。
System.Data:提供对便是ADO.NET结构的类的访问。
System.Windows.Forms:用于开发Windows应用程序。
System.Drawing:支持GDI+基本图形操作。
第二讲:深入C#数据类型
数据类型分类:
类别 |
描述 |
|
值类型 |
基本数据类型 |
整型:int |
长整型:long | ||
浮点型:float 双精度型:double | ||
字符型:char | ||
布尔型:bool | ||
枚举类型 |
枚举:enum |
|
结构类型 |
结构:struct |
|
引用类型 |
类 |
基类:System.Object |
字符串:string | ||
自定义类:class | ||
接口 |
接口:interface |
|
数组 |
数组:int[],string[] |
结构:1.特点:结构中可以有字段,也可以有方法;定义时,结构中的字段不能被赋值;使用结构时可以不用new,直接定义结构的对象即可;声明结构的对象后,必须给结构的成员赋初始值
2.定义:访问修饰符 struct 结构名{ //结构体 }
关于ref修饰的使用:
使用值方式(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留
使用值方式(不用ref修饰)传递引用类型参数时,参数在方法中的修改会保留
使用引用方式(用ref修饰)传递值类型或引用类型参数时,参数在方法中的修改都会被保留
值类型转换为引用类型称为装箱,反之称为拆箱.
第三讲:使用集合组织相关数据
ArrayList:类似于数组,可动态维护;容量可自动扩充,属于System.Collections命名空间
例:ArrayList aa=new ArrayList();
aa.Add(Object) //添加
aa.Remove(Object Value) //通过对象删除
aa.Remove(int index) //通过索引删除
注:给ArrayList 添加的元素都会被转换为Object类型,所有在访问这些元素的时候必须把它们转换回原来的数据类型。
Hashtable:”字典”,通过键(Key)和值(Value)来组织,也属于System.Collections命名空间。
例:Hashtable aa=new Hashtable();
aa.Add(Key,Object value) //添加,Key类型不定,一般为唯一标识列
aa.Remove(Key) //删除,也可使用aa.Clear() 清除所有元素
注:Hashtable 不能用索引访问,因此遍历只能用foreach()方法,须转换类型
(泛型集合)List<>
例:List<string> aa=new List<string>();
aa.Add( string value) //只能添加定义的数据类型
aa.RemoveAt(索引) //通过索引删除
aa.Remove(值或对象) //通过值或对象删除
(泛型集合)Dictionary<K,V>
例:Dictionary<Key,Value> aa=new Dictionary<Key,Value>();
aa.Add(Key,Value) //成对添加
aa.Remove(Key) //通过Key值删除
第四讲:深入类的方法
构造函数
特点:1.方法名与类名相同 2.没有返回值类型 3.主要完成对象的初始化工作
注:写一个带参的构造函数之后,如果实例化的这个类不传参数,则需要多写一个无参的构造函数
方法重载:
特点:1.方法名相同 2.方法参数类型不同或者参数个数不同 3.在同一个类中
注:方法名及参数列表相同的方法,仅是返回类型不同,不能称为方法重载
第六章:初识继承和多态
Base 关键字:表示父类,可以用于访问父类的成员;protected修饰符:用于修饰父类成员则只允许子类访问该成员
Public、private、protected 的区别
修饰符 |
类内部 |
子类 |
其他类 |
Public |
可以 |
可以 |
可以 |
private |
可以 |
可以 |
不可以 |
protected |
可以 |
不可以 |
不可以 |
继承的特性:1.传递性(如果class A:B,class B:C,则A也可以访问C的成员)、
2.单根性(只能有一个老爸)
使用virtual关键字修饰的方法称为虚方法,一般写在父类,可用override关键字修饰在子类中重写。
第七讲:深入理解多态
里氏原则:子类可以替换父类,父类不能替换子类。
使用abstract关键字修饰的类是抽象类,使用abstract关键字修饰的方法是抽象方法,有抽象方法的类成为抽象类,抽象类中的抽象方法必须要在非抽象子类中使用override关键字重写。
抽象类不能被实例化,不能是密封的或静态的。
Is 操作符用于检查对象和指定的类型是否兼容;as 操作符主要用于两个对象之间的类型转换。
面向对象的三个特性:
1.封装:保证对象自身数据的完整性和安全性。
2.继承:建立类之间的关系,实现代码复用,方便系统的扩展。
3.多态:相同的方法调用可实现不同的实现方式
第八讲:可扩展标记语言(XML)
读取XML文件的步骤:1.创建操作对象 2.加载XML文件 3.获取根节点对象 4.逐层次遍历根节点下的子节点,获取节点的值存到所对应的对象中。
例:读取XML文件的一般操作:
XmlDocument myXml=new XmlDocument(); //创建操作对象
myXml.Load(“文件路径”); //加载XML文件
XmlNode engineer=myXml.DocumentElement; //读取XML的根节点
//循环遍历根节点下的子节点,ChildNodes[0]则跳一级
Foreach(XmlNode node in engineer.ChildNodes)
{
String name=node[“节点文本”].InnerText
//如果获取节点文本则用node.Name
//如果获取文本节点中的name值则用node.Attributes[“节点文本”].InnerText
}
操作XML的对象属性和方法
对象 |
属性和方法 |
说明 |
XmlDocument |
DocumentElement属性 |
获取根节点 |
ChildNodes属性 |
获取所有子节点 |
|
Load()方法 |
读取整个XML的结构 |
|
XmlNode |
InnerText属性 |
当前节点的值 |
Name属性 |
当前节点的名称 |
|
ChildNodes属性 |
当前节点的所有子节点 |
TreeView控件用于显示具有层次结构的信息,主要属性有Nodes和SelectedNode。Nodes属性包含了TreeView的节点对象,SelectedNode表示当前选中的节点。
TreeNode表示TreeView的节点对象。Text属性用于设置节点的文字描述,Tag属性可以设置与节点相关的信息。
通过TreeNode的Add()方法可以给TreeView添加节点,Remove()方法可以移除指定的节点,Clear() 方法可以移除指定节点下的所有节点。
第九讲:文件操作
用C#程序读写一个文件的5个步骤:
1.创建文件流;2.创建阅读器或者写入器;3.执行读写操作;4.关闭阅读器或者写入器;5.关闭文件流。(注:流是一个用于数据传输的对象)
例:
//创建文件流
FileStream myfs=new FileStream(保存的路径,FileMode.Create);
//创建写入器
StreamWriter mySw=new StreamWriter(myfs);
//将内容写入文件
mySw.Write(“内容”);
//关闭写入器
mySw.Close();
//关闭文件流
myfs.Close();
StreamWriter 写入器
StreamWriter.Write(); 用于写入流,这个流就是我们创建好的流。
StreamWriter.WriteLine(); 用于写入一行数据,写入某些数据后跟换行符。
StreamWriter.Close(); 用于关闭写入器。
StreamReader 读取器
StreamReader.ReadLine(); 读取文件流中的一行数据,并返回字符串
StreamReader.ReadToEnd(); 从当前位置读到末尾,返回字符串
StreamReader.Close(); 用于关闭读取器
File类的常用方法(文件操作类,可以不实例化对象):
返回值类型 |
方法名称 |
说明 |
bool |
Exists(string path) |
用于检查指定文件是否存在 |
void |
Copy(string sourceFilePath, String destinationFilePath) |
将指定路径的源文件中的内容复制到目标文件中,如果目标文件不存在,则在指定路径中新建一个文件 |
void |
Move(string sourceFileName ,string destFileName) |
将指定文件移到一个新的路径 |
void |
Delete(string path) |
删除指定的文件,如果指定的文件不存在,则不引发异常 |
Directory类的常用方法(操作目录类,可以不实例化对象):
返回值类型 |
方法名称 |
说明 |
bool |
Exists(string path) |
用于检查指定文件夹在磁盘上是否存在 |
void |
Move(string sourceDirName, String destDirName) |
用于将文件或目录及其内容移到新位置 |
void |
Delete(string path,bool recursive) |
删除指定目录,如果recursive值为true,则删除子目录中的所有目录内容 |
静态类和非静态类的区别
静态类 |
非静态类 |
用static修饰 |
不用static修饰 |
只包含静态成员 |
可以包含静态成员 |
不可以包含实例成员 |
可以包含实例成员 |
使用类名调用静态成员 |
使用实例对象调用非静态成员 |
不能被实例化 |
可以被实例化 |
不能包含实例构造函数 |
包含实例构造函数 |
FileInfo类的属性和方法(文件操作类,必须实例化对象):
属性 |
说明 |
|
Exists |
用于检查指定文件是否存在,返回一个布尔值 |
|
Extension |
获取表示文件扩展名部分的字符串 |
|
Name |
获取文件名 |
|
FullName |
获取目录或文件的完整目录 |
|
返回值类型 |
方法 |
说明 |
FileInfo |
CopyTo(string) |
将现在文件复制到新文件,不允许覆盖现在文件 |
void |
Delete() |
永久删除文件 |
void |
maveTo(string) |
将指定文件移到新位置(string) |
DirectoryInfo类,与Directory类相似,但必须实例化对象,其中GetDirectories()方法:该方法返回当前目录的子目录对象数组;GetFiles():该方法返回当前目录下的文件列表(FileInfo 对象数组)。
MyFile类(存储文件信息类):
属性 |
类型 |
说明 |
FileLength |
float |
文件长度,以KB为单位 |
FileName |
string |
文件名 |
FilePath |
string |
文件路径 |
FileType |
string |
文件类型 |
本文出自 “张志鹏” 博客,请务必保留此出处http://zhangzhipeng.blog.51cto.com/9115459/1571060