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> 如果抽象父类的抽象方法中有返回值,那么子类在重写这个抽象方法的时候,也必须传入返回值

注意 :   

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

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

原文地址:https://www.cnblogs.com/zhaobaocheng/p/4621557.html