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

                       第三天

1. 类转换的关键字isas

    is (能不能转)

          如果转换成功,则换回true,如果转换不成功,则返回false;

        Person person = newStudent("学生", 11, '', 100);

          if (person isStudent)

            {

                ((Student)person).Study();

            }

            else

            {

                Console.WriteLine("转换失败");

          }

 

 

  as:(尝试的转)

       如果转换成功,则返回要转的对象,失败则返回null

 

Person person = newStudent("学生", 11, '', 100);

            Teacher teacher = person asTeacher;

            if (teacher != null)

            {

                teacher.Teach();

            }

            else

            {

                Console.WriteLine("转换失败");

          }

 

2.base:关键字

区别:

       this:

1> 就代表当前类的对象

   2> 调用当前自己类中的构造函数

        base:

           1> 指向父类的引用,可以调用父类的成员。

           2> 子类继承父类的构造函数时,用于调父类的构造函数

          

base并不代表父类的对象,而是指向父类的一个引用

      通过base关键字,我们可以调用父类的成员

 

     publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()

               {

                Console.WriteLine("我是子类");

                base.Test();

             }

3. new

1>  把父类与子类同名的方法进行隐藏,子类把方法重写         

 2> 创建对象   

  

  Person

 publicvoid Test()

           {

                Console.WriteLine("我是父类");

         }

        Teache

publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()

           {

                 Console.WriteLine("我是子类");

               base.Test();

}

 

4. ArrayList集合:

      特点:  不需要考虑数组的长度

              不需要考虑元素的类型和个数

 

     常用的方法:

         1> list.count : 实际包含的元素个数;

         2> list.capcity: 可包含的数组个数(从4开始,进行2为递增)

         3> list.Add(): 添加单个元素;

         4> list.AddRange(): 添加一个数组

         5> list.Clear(): 清除集合中所有的元素

         6> list.Remove(“张三”): 写谁谁就被删掉了

         7> list.RemoveAt(1): 根据下标删除集合中的元素;

         8> list.RemoveRange(0,3): 删除一定范围内的元素

         9> list.Insert(1,”我是新来的”);插入元素到指定1的位置

         10> list.InsertRange(0, new string[] { "张三", "李四", "王二狗蛋儿" }): 插入一条数组

        11> list.Sort() 进行升序排列

        12> list.Rever() 反转整个数组         

 

5. 装箱和拆箱

       装箱:值类型---à引用类型  

              int n = 10;

            object o = n;//装箱

       拆箱:引用类型---à值类型

           int n2 = (int)o;//拆箱

     

   注意: 有继承关系的对象才能发生拆装箱,没有就不能发生拆装箱;

         装箱什么类型,拆箱就必须什么类型

 

 

6.Hashtable字典集合--->字典的拼音目录;值--->汉字

      定义:存储数据的时候,采用的是键值对的方式来进行存储。

      创建过程:

Hashtable ht = newHashtable();  //创建字典集合对象

              ht.Add(1, "张三");   //给集合对象添加数据

 

              Console.WriteLine(ht[1]);   //根据键的值输出值

 

 //我们使用foreach循环来对键值对集合进行遍历

              foreach (var item in ht.Values)   //如果ht.Keys就是把数组中所有键传入item中,最后根据ht[item]查询值

              {                    

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

                  Console.WriteLine(item);  //item

            }

 

注意1.在我们给Hashtable添加数据的时候,键必须是唯一的,而值是可以重复的;

if (!ht.ContainsKey(2))   //判断键是否重复

            {

 ht.Add(2, "新来哒");

            }

            else

            {

                Console.WriteLine("集合中已经存在相同的键");

            }

      2.键是可以重新赋值的。

 

7. var

      称之为推断类型,能够根据值推断出值的类型

        var number = 100;

            var pi = 3.14;

            var name = "张三";

            var gender = '';

            var money = 5000m;

            var b = true;

 

            Console.WriteLine(number.GetType());   

            Console.WriteLine(pi.GetType());

            Console.WriteLine(name.GetType());

            Console.WriteLine(gender.GetType());

            Console.WriteLine(money.GetType());

          Console.WriteLine(b.GetType());

      

注意:本类型不建议使用,因为C#是一门强类型语言,就是对数据的类型必须有一个明确的定义。而且造成程序后期可读性差;

 

8. File:   (using System.IO;//File类的命名空间)

     常用函数:

         File.Exist(): 判断指定的文件是否存在,返回bool类型;

         File.Create(): 创建一个对象;

eg:

//创建文件之前,首先判断文件是否存在绝对路径

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

            {

                File.Create(@"C:UsersSpringRainDesktop ew.txt");

          }

 

         File.Delete(): 删除一个文件;

          eg:    

File.Delete(@"C:UsersSpringRainDesktop ew.txt");

            Console.WriteLine("删除成功");

         File.Copy(): 复制一个文件;

          eg:  

File.Copy(@"C:UsersSpringRainDesktop繁体字.txt", @"C:UsersSpringRainDesktop ew繁体字new.txt");

         File.Move(): 剪切一个文件;

        eg:

File.Move(@"C:UsersSpringRainDesktop ew繁体字new.txt", @"D:新来的.txt");

            

         路径:

           1.相对路径:文件相对于你可执行应用程序的路径;

           2.决对路径:通过这个路径可直接在你电脑上找到这个文件的路径;

 

 

9. Path

       Path.GetFileName(); 获取文件名但是包含扩展名

       Path.GetFileNameWithoutExtensition();获取文件名但是不包括扩展名;

      eg:

string filePath = @"C:UsersSpringRainDesktop繁体字.txt";

            #region Old Method老方法

            //int index = filePath.LastIndexOf("\");

            //int index2 = filePath.LastIndexOf(".");

            //string fileName = filePath.Substring(index + 1,index2-index-1);

            #endregion

 

 

 

            Console.WriteLine(Path.GetFileName(filePath));

            Console.WriteLine(Path.GetFileNameWithoutExtension(filePath));

       Path.ChangeExtension(): 改变文件后辍名;

        eg:

            Console.WriteLine(Path.ChangeExtension(filePath, "jpg"));

       Path.GetFullPath(): 获得文件的绝对路径;

eg:

Console.WriteLine(Path.GetFullPath("1.txt"));

 

 

  第三天

 

1. 类转换的关键字isas

    is (能不能转)

          如果转换成功,则换回true,如果转换不成功,则返回false;

        Person person = newStudent("学生", 11, '', 100);

          if (person isStudent)

            {

                ((Student)person).Study();

            }

            else

            {

                Console.WriteLine("转换失败");

          }

 

 

  as:(尝试的转)

       如果转换成功,则返回要转的对象,失败则返回null

 

Person person = newStudent("学生", 11, '', 100);

            Teacher teacher = person asTeacher;

            if (teacher != null)

            {

                teacher.Teach();

            }

            else

            {

                Console.WriteLine("转换失败");

          }

 

2.base:关键字

区别:

       this:

1> 就代表当前类的对象

   2> 调用当前自己类中的构造函数

        base:

           1> 指向父类的引用,可以调用父类的成员。

           2> 子类继承父类的构造函数时,用于调父类的构造函数

          

base并不代表父类的对象,而是指向父类的一个引用

      通过base关键字,我们可以调用父类的成员

 

     publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()

               {

                Console.WriteLine("我是子类");

                base.Test();

             }

3. new

1>  把父类与子类同名的方法进行隐藏,子类把方法重写         

 2> 创建对象   

  

  Person

 publicvoid Test()

           {

                Console.WriteLine("我是父类");

         }

        Teache

publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()

           {

                 Console.WriteLine("我是子类");

               base.Test();

}

 

4. ArrayList集合:

      特点:  不需要考虑数组的长度

              不需要考虑元素的类型和个数

 

     常用的方法:

         1> list.count : 实际包含的元素个数;

         2> list.capcity: 可包含的数组个数(从4开始,进行2为递增)

         3> list.Add(): 添加单个元素;

         4> list.AddRange(): 添加一个数组

         5> list.Clear(): 清除集合中所有的元素

         6> list.Remove(“张三”): 写谁谁就被删掉了

         7> list.RemoveAt(1): 根据下标删除集合中的元素;

         8> list.RemoveRange(0,3): 删除一定范围内的元素

         9> list.Insert(1,”我是新来的”);插入元素到指定1的位置

         10> list.InsertRange(0, new string[] { "张三", "李四", "王二狗蛋儿" }): 插入一条数组

        11> list.Sort() 进行升序排列

        12> list.Rever() 反转整个数组         

 

5. 装箱和拆箱

       装箱:值类型---à引用类型  

              int n = 10;

            object o = n;//装箱

       拆箱:引用类型---à值类型

           int n2 = (int)o;//拆箱

     

   注意: 有继承关系的对象才能发生拆装箱,没有就不能发生拆装箱;

         装箱什么类型,拆箱就必须什么类型

 

 

6.Hashtable字典集合--->字典的拼音目录;值--->汉字

      定义:存储数据的时候,采用的是键值对的方式来进行存储。

      创建过程:

Hashtable ht = newHashtable();  //创建字典集合对象

              ht.Add(1, "张三");   //给集合对象添加数据

 

              Console.WriteLine(ht[1]);   //根据键的值输出值

 

 //我们使用foreach循环来对键值对集合进行遍历

              foreach (var item in ht.Values)   //如果ht.Keys就是把数组中所有键传入item中,最后根据ht[item]查询值

              {                    

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

                  Console.WriteLine(item);  //item

            }

 

注意1.在我们给Hashtable添加数据的时候,键必须是唯一的,而值是可以重复的;

if (!ht.ContainsKey(2))   //判断键是否重复

            {

 ht.Add(2, "新来哒");

            }

            else

            {

                Console.WriteLine("集合中已经存在相同的键");

            }

      2.键是可以重新赋值的。

 

7. var

      称之为推断类型,能够根据值推断出值的类型

        var number = 100;

            var pi = 3.14;

            var name = "张三";

            var gender = '';

            var money = 5000m;

            var b = true;

 

            Console.WriteLine(number.GetType());   

            Console.WriteLine(pi.GetType());

            Console.WriteLine(name.GetType());

            Console.WriteLine(gender.GetType());

            Console.WriteLine(money.GetType());

          Console.WriteLine(b.GetType());

 

注意:本类型不建议使用,因为C#是一门强类型语言,就是对数据的类型必须有一个明确的定义。而且造成程序后期可读性差;

 

8. File:   (using System.IO;//File类的命名空间)

     常用函数:

         File.Exist(): 判断指定的文件是否存在,返回bool类型;

         File.Create(): 创建一个对象;

eg:

//创建文件之前,首先判断文件是否存在绝对路径

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

            {

                File.Create(@"C:UsersSpringRainDesktop ew.txt");

          }

 

         File.Delete(): 删除一个文件;

          eg:    

File.Delete(@"C:UsersSpringRainDesktop ew.txt");

            Console.WriteLine("删除成功");

         File.Copy(): 复制一个文件;

          eg:  

File.Copy(@"C:UsersSpringRainDesktop繁体字.txt", @"C:UsersSpringRainDesktop ew繁体字new.txt");

         File.Move(): 剪切一个文件;

        eg:

File.Move(@"C:UsersSpringRainDesktop ew繁体字new.txt", @"D:新来的.txt");

            

         路径:

           1.相对路径:文件相对于你可执行应用程序的路径;

           2.决对路径:通过这个路径可直接在你电脑上找到这个文件的路径;

 

 

9. Path

       Path.GetFileName(); 获取文件名但是包含扩展名

       Path.GetFileNameWithoutExtensition();获取文件名但是不包括扩展名;

      eg:

string filePath = @"C:UsersSpringRainDesktop繁体字.txt";

            #region Old Method老方法

            //int index = filePath.LastIndexOf("\");

            //int index2 = filePath.LastIndexOf(".");

            //string fileName = filePath.Substring(index + 1,index2-index-1);

            #endregion

 

 

 

            Console.WriteLine(Path.GetFileName(filePath));

            Console.WriteLine(Path.GetFileNameWithoutExtension(filePath));

       Path.ChangeExtension(): 改变文件后辍名;

        eg:

            Console.WriteLine(Path.ChangeExtension(filePath, "jpg"));

       Path.GetFullPath(): 获得文件的绝对路径;

eg:

Console.WriteLine(Path.GetFullPath("1.txt"));

 

 

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