深入.net平台和C#编程
第一讲:深入.NET框架
第二讲:深入C#数据类型
第三讲:使用结合组织相关数据
第四讲:深入类的方法
第六讲:初识继承和多态
第七讲:深入理解多态
第八讲:可扩展标记语言(XML)
第九讲:文件操作
第一讲:深入.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
文件类型
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。