• C# 面向对象系列笔记(四)


                                第四天

    1.泛型集合

    1>ArrayList--->List<T>     集合

    -àlist.Add() //添加数据

        -àlist.AddRange(new int[]{1,2,3,4,5,7,8,9});//添加集合数据

        -àlist.Chera(); //清除所有数据

        -àlist.Reverse(); //翻转;

        -àlist.Sort();  //升序排列

        -àIist.Insert(0,100);  //根据索引添加数据

        -àlist.Insert(0,new int[]{1,2,3,4,5.67})

        -àlist.Remove(100);   //写谁 谁删除

        -àlist.RemoveAt(5);   //根据索引删除

        -àlist.RemoveRange(1,10);  //删除一段;1,开始索引,10: 移除的范围

        -àlist.RemoveAll(n=>n>3);   //lamda表达式

     

     

    2>Hashtable--->Dictionary<Tkey,Tvalue>  键值对集合

     

           遍历方式:

             // 循环输出键值对集合

                foreach (var item in dic.Keys)

                {

                    Console.WriteLine("{0}----{1}",item,dic[item]);

                }

     

                //更加洋气的遍历方式

                foreach (KeyValuePair<string, int> kvp in dic)

                {

                    Console.WriteLine("{0}---{1}", kvp.Key, kvp.Value);

                }

     

    2.File读写数据(上接昨天讲的File

        1> ReadAllBytes():  以字节的形式读取文件

            eg:

              byte[] buffer = File.ReadAllBytes(@"C:UsersSpringRainDesktop310.Net基础班第十二天.txt");

                //字节数组---->字符串 GetString() ToString()

                //32 45 67 32 45 67 我爱你解码

                string str = Encoding.Default.GetString(buffer);

                Console.WriteLine(str);

    2> WriteAllBytes() 以字节的方式写入

        eg:

                string str = "楼上  ";

                //字符串--->转码字节数组

                 byte[] buffer=   Encoding.Default.GetBytes(str);

                 File.WriteAllBytes(@"C:UsersSpringRainDesktop123.txt", buffer);

     

                 Console.WriteLine("写入成功");

     

      

     

    3> 对多媒体文件实现复制粘贴的操作(File复制粘贴是一次性全部复制/粘贴,太消耗内存,以后可以用 数据流的方法)

          eg:

      //首先使用ReadAllBytes将要复制的文件读取出来

                byte[] buffer = File.ReadAllBytes(@"C:UsersSpringRainDesktop ewnew.mp4");

                //使用WriteAllBytes将字节数组写入到指定的位置          File.WriteAllBytes(@"C:UsersSpringRainDesktop ew22222.mp4", buffer);

          Console.WriteLine("复制成功");

    4> ReadAllLines()  WritrAllLines()  //读入或写入每行数据,返回一个数组类型

    eg:

              string[] contents = File.ReadAllLines(@"C:UsersSpringRainDesktop310.Net基础班第十二天.txt", Encoding.Default);  //

                File.WriteAllLines(@"C:UsersSpringRainDesktop ew222.txt", newstring[] { "张三", "李四", "王五", "赵六" });

          Console.WriteLine("写入成功");  //

     

    5> ReadAllText() WriteAllText()   //读入或写入整个文档,返回字符串类型

      eg:

                string content = File.ReadAllText(@"C:UsersSpringRainDesktop ew222.txt");  //

                Console.WriteLine(content);

                File.WriteAllText(@"C:UsersSpringRainDesktop ew222.txt", "覆盖你们");   //

           Console.WriteLine("写入成功");

     

    3.Directory  (操作文件夹的类)

         1> Directory.Exists():查询文件夹是否存在

         2> Directory.CreateDirectory() :创建了一个文件夹

         eg:

    if (!Directory.Exists(@"C:UsersSpringRainDesktop ew"))

                {

                    //如果没有我就创建一个

                  Directory.CreateDirectory(@"C:UsersSpringRainDesktop ew");

                  Console.WriteLine("创建成功");

                }

                else

                {

                    //如果有了我就往里面追加100个文件夹

                    for (int i = 0; i < 100; i++)

                    {

    Directory.CreateDirectory(@"C:UsersSpringRainDesktop ew" + i);

                    }

                    Console.WriteLine("追加成功");

                }

     

         3> Directory.Delete()  //删除文件夹

           eg:

              Directory.Delete(@"C:UsersSpringRainDesktop ew", true);

                Console.WriteLine("文件夹删除成功");

                Console.ReadKey();

         4> Directory.Move()  //剪切文件夹(不能越盘剪切

          eg:

            Directory.Move(@"D:新来哒", @"D:1111111111111 ewnewnew");

             Console.WriteLine("剪切成功");

     

         5> Directory.GetFiles()   //返回文件夹里文件指定类型绝对路径

        

              

    4 .多态   (里包含:虚方法,抽象类,接口)

         1> 定义:我们使用多态的目的就是为了让一个对象能够表现出多种状态(类型)

          2> 使用虚方法实现多态:

            ---将父类的函数名称,使用关键字virtual进行标记

            ---将子类的每个函数一次标记为override,表示重写父类的虚函数;

            ---如果没有virtualoverride,那么父类无论如何都不会去执行子类的函数

            ---如果我们将父类的函数标记为virtual,那么意味着这个函数可以被子类重写一遍,如果父类装的是子类的对象,则执行子类中重写父类的函数

            ---ToString()就是object类中的一个虚方法。

     

    5. 抽象类

         1> 抽象成员必须标记为abstract,并且不能有任何方法来实现;

         2> 抽象成员必须在抽象类中。

         3> 抽象类不能被实例化

         4> 子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是一个抽象类,则可以不重写)

         5> 抽象类的访问修饰符不能是private

         6> 在抽象类中可以包含实实例程成员,并且抽象类中的实例成员可以不被子类实现

         7> 抽象类是有构造函数的,虽然不能被实例化。(为子类提供继承)

         8> 如果父类的抽象方法中有参数,那么,继承这个抽象类的子类在重写父类的方法时候必须传入对应的参数。

         9> 如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候,也必须传入返回值

    注意 :   

           如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑讲父类定义成一个普通类,用虚方法来实现多态

           如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类

      第四天

    1.泛型集合

    1>ArrayList--->List<T>     集合

    -àlist.Add() //添加数据

        -àlist.AddRange(new int[]{1,2,3,4,5,7,8,9});//添加集合数据

        -àlist.Chera(); //清除所有数据

        -àlist.Reverse(); //翻转;

        -àlist.Sort();  //升序排列

        -àIist.Insert(0,100);  //根据索引添加数据

        -àlist.Insert(0,new int[]{1,2,3,4,5.67})

        -àlist.Remove(100);   //写谁 谁删除

        -àlist.RemoveAt(5);   //根据索引删除

        -àlist.RemoveRange(1,10);  //删除一段;1,开始索引,10: 移除的范围

        -àlist.RemoveAll(n=>n>3);   //lamda表达式

     

     

    2>Hashtable--->Dictionary<Tkey,Tvalue>  键值对集合

     

           遍历方式:

             // 循环输出键值对集合

                foreach (var item in dic.Keys)

                {

                    Console.WriteLine("{0}----{1}",item,dic[item]);

                }

     

                //更加洋气的遍历方式

                foreach (KeyValuePair<string, int> kvp in dic)

                {

                    Console.WriteLine("{0}---{1}", kvp.Key, kvp.Value);

                }

     

    2.File读写数据(上接昨天讲的File

        1> ReadAllBytes():  以字节的形式读取文件

            eg:

              byte[] buffer = File.ReadAllBytes(@"C:UsersSpringRainDesktop310.Net基础班第十二天.txt");

                //字节数组---->字符串 GetString() ToString()

                //32 45 67 32 45 67 我爱你解码

                string str = Encoding.Default.GetString(buffer);

                Console.WriteLine(str);

    2> WriteAllBytes() 以字节的方式写入

        eg:

                string str = "楼上  ";

                //字符串--->转码字节数组

                 byte[] buffer=   Encoding.Default.GetBytes(str);

                 File.WriteAllBytes(@"C:UsersSpringRainDesktop123.txt", buffer);

     

                 Console.WriteLine("写入成功");

     

      

     

    3> 对多媒体文件实现复制粘贴的操作(File复制粘贴是一次性全部复制/粘贴,太消耗内存,以后可以用 数据流的方法)

          eg:

      //首先使用ReadAllBytes将要复制的文件读取出来

                byte[] buffer = File.ReadAllBytes(@"C:UsersSpringRainDesktop ewnew.mp4");

                //使用WriteAllBytes将字节数组写入到指定的位置          File.WriteAllBytes(@"C:UsersSpringRainDesktop ew22222.mp4", buffer);

          Console.WriteLine("复制成功");

    4> ReadAllLines()  WritrAllLines()  //读入或写入每行数据,返回一个数组类型

    eg:

              string[] contents = File.ReadAllLines(@"C:UsersSpringRainDesktop310.Net基础班第十二天.txt", Encoding.Default);  //

                File.WriteAllLines(@"C:UsersSpringRainDesktop ew222.txt", newstring[] { "张三", "李四", "王五", "赵六" });

          Console.WriteLine("写入成功");  //

     

    5> ReadAllText() WriteAllText()   //读入或写入整个文档,返回字符串类型

      eg:

                string content = File.ReadAllText(@"C:UsersSpringRainDesktop ew222.txt");  //

                Console.WriteLine(content);

                File.WriteAllText(@"C:UsersSpringRainDesktop ew222.txt", "覆盖你们");   //

           Console.WriteLine("写入成功");

     

    3.Directory  (操作文件夹的类)

         1> Directory.Exists():查询文件夹是否存在

         2> Directory.CreateDirectory() :创建了一个文件夹

         eg:

    if (!Directory.Exists(@"C:UsersSpringRainDesktop ew"))

                {

                    //如果没有我就创建一个

                  Directory.CreateDirectory(@"C:UsersSpringRainDesktop ew");

                  Console.WriteLine("创建成功");

                }

                else

                {

                    //如果有了我就往里面追加100个文件夹

                    for (int i = 0; i < 100; i++)

                    {

    Directory.CreateDirectory(@"C:UsersSpringRainDesktop ew" + i);

                    }

                    Console.WriteLine("追加成功");

                }

     

         3> Directory.Delete()  //删除文件夹

           eg:

              Directory.Delete(@"C:UsersSpringRainDesktop ew", true);

                Console.WriteLine("文件夹删除成功");

                Console.ReadKey();

         4> Directory.Move()  //剪切文件夹(不能越盘剪切

          eg:

            Directory.Move(@"D:新来哒", @"D:1111111111111 ewnewnew");

             Console.WriteLine("剪切成功");

     

         5> Directory.GetFiles()   //返回文件夹里文件指定类型绝对路径

         

              

    4 .多态   (里包含:虚方法,抽象类,接口)

         1> 定义:我们使用多态的目的就是为了让一个对象能够表现出多种状态(类型)

          2> 使用虚方法实现多态:

            ---将父类的函数名称,使用关键字virtual进行标记

            ---将子类的每个函数一次标记为override,表示重写父类的虚函数;

            ---如果没有virtualoverride,那么父类无论如何都不会去执行子类的函数

            ---如果我们将父类的函数标记为virtual,那么意味着这个函数可以被子类重写一遍,如果父类装的是子类的对象,则执行子类中重写父类的函数

            ---ToString()就是object类中的一个虚方法。

     

    5. 抽象类

         1> 抽象成员必须标记为abstract,并且不能有任何方法来实现;

         2> 抽象成员必须在抽象类中。

         3> 抽象类不能被实例化

         4> 子类继承抽象类后,必须把父类中的所有抽象成员都重写(除非子类也是一个抽象类,则可以不重写)

         5> 抽象类的访问修饰符不能是private

         6> 在抽象类中可以包含实实例程成员,并且抽象类中的实例成员可以不被子类实现

         7> 抽象类是有构造函数的,虽然不能被实例化。(为子类提供继承)

         8> 如果父类的抽象方法中有参数,那么,继承这个抽象类的子类在重写父类的方法时候必须传入对应的参数。

         9> 如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候,也必须传入返回值

    注意 :   

           如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑讲父类定义成一个普通类,用虚方法来实现多态

           如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类

  • 相关阅读:
    模拟退火求二维费马点
    二叉查找树
    Linux中让普通用户拥有超级用户的权限
    python 正则表达式应用——缩写词扩充
    解决单链表中的环问题
    python数学函数
    train,dev,test数据集作用
    朴素贝叶斯法(二)——基本方法
    生成模型与判别模型
    ImportError: cannot import name wordnet
  • 原文地址:https://www.cnblogs.com/zhaobaocheng/p/4621557.html
Copyright © 2020-2023  润新知