第一讲 :深入.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:支持泛型操作。

  1. System.IO:支持对文件的操作,如复制、粘贴、删除以及对文件的读写等。

  2. System.Net:支持对网络协议的编程。

  3. System.Data:提供对便是ADO.NET结构的类的访问。

  4. System.Windows.Forms:用于开发Windows应用程序。

  5. System.Drawing:支持GDI+基本图形操作。

 

 

第二讲:深入C#数据类型

 

  • 数据类型分类:

                        类别

           描述

 

 

 

 

     值类型

       基本数据类型

整型:int

长整型:long

浮点型:float

双精度型:double

字符型:char

布尔型:bool

       枚举类型

枚举:enum

       结构类型

结构:struct

       引用类型

         

基类:System.Object

字符串:string

自定义类:class

          接口

接口:interface

          数组

数组:int[]string[]

  • 结构:1.特点:结构中可以有字段,也可以有方法;定义时,结构中的字段不能被赋值;使用结构时可以不用new,直接定义结构的对象即可;声明结构的对象后,必须给结构的成员赋初始值

         2.定义:访问修饰符 struct 结构名{    //结构体     

  • 关于ref修饰的使用:

  1. 使用值方式(不用ref修饰)传递值类型参数时,参数在方法中的修改不会保留

  2. 使用值方式(不用ref修饰)传递引用类型参数时,参数在方法中的修改会保留

  3. 使用引用方式(用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<KV>

 例:Dictionary<Key,Value> aa=new Dictionary<Key,Value>();

 aa.Add(Key,Value)   //成对添加

 aa.Remove(Key)   //通过Key值删除

第四讲:深入类的方法

  • 构造函数

 特点:1.方法名与类名相同 2.没有返回值类型 3.主要完成对象的初始化工作

注:写一个带参的构造函数之后,如果实例化的这个类不传参数,则需要多写一个无参的构造函数

  • 方法重载:

 特点:1.方法名相同 2.方法参数类型不同或者参数个数不同 3.在同一个类中

 注:方法名及参数列表相同的方法,仅是返回类型不同,不能称为方法重载

第六章:初识继承和多态

  • Base 关键字:表示父类,可以用于访问父类的成员;protected修饰符:用于修饰父类成员则只允许子类访问该成员

  • Publicprivateprotected 的区别

修饰符

类内部

子类

其他类

Public

可以

可以

可以

private

可以

可以

不可以

protected

可以

不可以

不可以

  • 继承的特性:1.传递性(如果class ABclass BC,则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控件用于显示具有层次结构的信息,主要属性有NodesSelectedNodeNodes属性包含了TreeView的节点对象,SelectedNode表示当前选中的节点。

  • TreeNode表示TreeView的节点对象。Text属性用于设置节点的文字描述,Tag属性可以设置与节点相关的信息。

  • 通过TreeNodeAdd()方法可以给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 pathbool 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

文件类型