首页 > 代码库 > NET平台和C#

NET平台和C#

.NET平台和C#编程

一、深入.NET框架

 

1..NET框架具有两个组件:CLR(公共语言运行时)和FCL(框架类库),CLR是.NET框架的基础

 

2.框架核心类库:

 

System.Collections.Generic:泛型操作

 

System.IO:IO流操作

 

System.Net:网络编程

 

System.Data:ADO.NET结构的类的访问

 

System.Windows.Forms:窗体操作

 

System.Drawing:图形操作

 

二、深入C#数据类型

 

1.结构体:结构体是由struct修饰的类,结构体是值类型(枚举也是值类型)

 

public struct Student
{
}

 

2.拆箱和装箱:

 

装箱:就是把值类型转换为引用类型

 

object o=1;

 

拆箱:就是把引用类型转换为值类型

 

int num=(int)o;

 

3.值传递和引用传递(有无ref修饰)

 

a.有ref修饰时,修改的值会永久保留

 

b.无ref修饰时,是值类型的,修改的值不会永久保留

 

c.无ref修饰时,是引用类型的,修改的值会永久保留

 

三、泛型集合

 

1.集合的概念:

 

集合就是将一堆数据类型的数据放在一起的一种容器,和数组是很相似的东西。

 

2.集合的分类以及声明方法

 

a.集合分为非泛型和泛型集合,非泛型又分单列(ArrayList)和双列(Hashtable),泛型也分单列(List<T>)和双列(Dictionary<K,V>)。

 

单列的T数据类型可以为object类型,双列的K,V也可以是object类型

 

b.集合的声明

 

ArrayList list=new ArrayList();

 

Hashtable list=new Hashtable();

 

List<T> list=new List<T>();

 

Dictionary<K,V> list=new Dictionary<K,V>();

 

3.集合的方法和属性

 

1.Add(),增加数据的方法

 

2.Remove(),删除数据的方法,()里填的是一整条的数据,单列集合的删除,集合会去自动维护数据,这样集合不会出现某个索引的值是为空的

 

3.RemoveAt(),同样也是删除数据的方法,()里填的是索引(单列)双列没有RemoveAt()方法,

 

4.Clear(),清空集合的所有数据

 

5.Count属性,可以得到集合有几条数据

 

6.Capacity属性,集合的容量,集合的容量是成倍(二倍)的增加的,Count为0时,Capacity为0,Count为1时,Capacity为4

 

7.Contains(),单列集合用来判断某个数据是否存在

 

8.ContainsKey(),双列判断是否存在某个Key值

 

9.ContainsValue(),双列判断是否存在某个Value值

 

4.集合的遍历方法

 

HashTable和Dictionary遍历不同就是,遍历值类型的时候,HashTable需要进行类型转换(拆箱,装箱)

 

HashTable:

 

(1).通过Key值遍历 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }

 

(2).通过value值遍历 foreach (Student item in list.Values) { Console.WriteLine((Student)item.Name); }

 

(3).通过整体的双列集合遍历 foreach (DictionaryEntry item in list) { Console.WriteLine(item.Key); Console.WriteLine(((Student)item.Value).Name); }

 

Dictionary:

 

(1).通过Key值遍历 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }

 

(2).通过value值遍历 foreach (Student item in list.Values) { Console.WriteLine(item.Name); }

 

(3).通过整体遍历 foreach (KeyValuePair<T,V> item in list) { Console.WriteLine(item.Key); Console.WriteLine((item.Value).Name); }

 

四、深入类的方法

 

1.方法重载:通过传的参数的不同从而调用不同的方法,方法名相同,参数类型不同,参数顺序不同,参数个数不同,和返回值无关

 

参数类型不同:

 

public void Play(int num){};

 

public void Play(string name){};

 

参数顺序不同:

 

public void Play(int num,int age){};

 

public void Play(int age,int num){};

 

参数个数不同:

 

public void Play(int num){};

 

public void Play(string name,int num){};

 

和返回值无关:

 

public string Play(int num){};

 

public int Play(int num){};

 

2.类的构造:和类名相同,无返回值

 

无参构造:

 

public class Student

 

{

 

  public Student(){};

 

}

 

带参构造:有带参构造,必须写出类的无参构造

 

public class Student

 

{

 

  public string Name { get; set; }

 

  public Student(){};

 

  public Student(string name){this.Name=name};

 

}

 

3.对象间的交互

 

一个电视类:

 

public class Tv

 

{

 

  public void Play(){};

 

}

 

一个电视工具类

 

public class TvTool

 

{

 

  public void Play()

 

  {

 

    Tv t=new Tv();

 

    t.Play();

 

  }; 

 

}

 

主程序中:

 

TvTool tool=new TvTool();

 

tool.Play();

 

从而只有控制一个类去控制别的类

 

五、继承和多态

 

1.继承:子类继承父类,子类便可以使用父类的属性和方法,继承用“:”(冒号)实现继承

 

父类:

 

public class Man

 

{

 

  int age;

 

  string name;

 

  public void Say()

 

  {

 

  };

 

}

 

子类:

 

public class Student:Man

 

{

 

  public void Play()

 

  {

 

    方法里便可以使用父类的属性和方法

 

    age=1;

 

    name="张三";

 

    Say();

 

  };

 

}

 

2.虚方法实现多态:通过子类重新父类的方法,实现多态,从而一个方法实现不同效果

 

父类:

 

public class Man

 

{

 

  public virtual void Say()

 

  {

 

  }

 

}

 

子类:

 

public class Student:Man

 

{

 

  public override void Play()

 

  {

 

    我是一个学生

 

  }

 

}

 

public class Super:Man

 

{

 

  public override void Play()

 

  {

 

    我是一个超人

 

  }

 

}

 

六、深入多态

 

1.里氏原则:父类实力化子类不会影响程序

 

2. is 和  as

 

is操作符用于检查对象和指定的类型

 

as操作符用于两个对象之间的类型转换

 

3.抽象类实现多态

 

父类:

 

public abstract class Man

 

{

 

  public abstract void Say()

 

  {

 

  }

 

   public void Play(){}

 

  抽象类可以有普通方法

 

}

 

子类:

 

public class Student:Man

 

{

 

  public override void Play()

 

  {

 

    我是一个学生

 

  }

 

}

 

public class Super:Man

 

{

 

  public override void Play()

 

  {

 

    我是一个超人

 

  }

 

}

 

七、Xml操作

 

1.Xml解析

 

XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode root = doc.DocumentElement;

 

foreach (XmlNode item in root.ChildNodes)
{  

 

switch (item.Name)
{
case "Name":
movieName = item.InnerText;
m.MovieName = movieName;
break;
case "Poster":
playBill = item.InnerText;
m.Poster = playBill;
break;

 

}

 

可以将Xml数据放在集合中

 

也可以通过索引器进行解析到Xml数据

 

2.关于XmlNode对象的属性

 

InnerText:当前节点的值

 

Name:当前节点的名称

 

ChildNodes:当前节点的所有子节点

 

3.treeView绑定节点

 

TreeNode tn = new TreeNode(item);
tn.Tag = Schedule.Items[item].Movie;
Treeview.Nodes.Add(tn);

 

八、文件操作

 

1.读写文件

 

写:

 

FileStream fs=new FileStream(path,FileMode.Create);

 

StreamWriter sw=new StreamWriter(fs);

 

sw.Writer(需要些的文本);

 

sw.Close();     后开的先关流

 

fs.Close();

 

读:

 

FileStream fs=new FileStream(path,FileMode.Open);

 

StreamWriter sw=new StreamWriter(fs,Ending.Default);

 

String txt=sw.ReadToEnd();

 

sw.Close();     

 

fs.Close();

 

2.相关属性

 

Exists:潘判断是否存在

 

Extension:后缀名

 

Naem:文件名

 

FullName:文件地址

NET平台和C#