zoukankan      html  css  js  c++  java
  • 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:文件地址

  • 相关阅读:
    你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道
    c++nullptr(空指针常量)、constexpr(常量表达式)
    c++bind函数使用
    WordPress高亮代码插件enlighter自定义CSS
    终于有人把云计算、大数据和人工智能讲明白了!
    14. vue源码入口+项目结构分析
    13. Vue CLI脚手架
    12. Vue搭建本地服务
    11. webpack配置Vue
    10. vue之webpack打包原理和用法详解
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5906952.html
Copyright © 2011-2022 走看看