C# 接口 File类 泛型类 列表 字典

124 阅读2分钟

16.接口

1.为什么需要使用接口

接口相当于是一个规范,接口可以实现多继承,接口指定一组没有函数体的函数成员,也就是说只提供了一些没有函数体的函数,具体怎么实现还要我们在自己的类中去实现。

2.接口的使用

  1. 接口中包含很多没有实现的函数成员,每个成员不需要设置访问修饰符,默认都是 public公开的

image.png

  1. 接口中可以放方法,属性(只能用自动属性就是简写模式),索引器,这些的本质其实还是函数
  2. 因为接口中的函数都是没有实现的,所以接口是不能实例化的
  3. 接口可以被类继承,但接口不能继承类;接口可以多继承其他接口

image.png 接口可以继承多个接口,多个接口用逗号分开

image.png 类也可以继承多个接口

注意点:一个类里面继承多个接口,当你继承类的时候,类需要写在接口的最前面,否则会报错 image.png 5. 显示实现接口 我们在开发中如果自己的类中有和接口中同名的函数,那么在继承接口的时候,类中的同名函数会被认为是实现接口中的函数,但是我们就想区分出来,另外去实现接口中的函数怎么办呢?

image.png

代码如下:

    public interface  F
    {
        void show();
    }
    class Son : F
    {
        void F.show()
        {
            Console.WriteLine("因为我是类,所以我可以实现show方法");
        }
        public void show()
        {
            Console.WriteLine("我是Son类中独有的show方法");
        }


    }
    
            //分别调用类中的同名函数和类中实现接口的同名函数
            Son s = new Son();
            s.show(); //调用本类中独有的show方法
            F f = new Son();
            f.show();//调用本类中实现接口中的show方法

17.File类处理小文件的读写

1.逐行读取文件中的信息到字符串数组中

image.png 注意:如果使用绝对路径的话,后期需要打包路径时写死的,会出现访问不到。

2.读取文件中的信息到字符串中

image.png

3.向文件中写入信息(覆盖形式)

image.png

4.向文件中写入信息(追加的形式)

image.png

18.泛型类

1.为什么要泛型

我们很多时候在往方法传参数都是固定某种类型的数据,但是很多时候我们数据类型可能是多种的,比如你比较两个数的大小有可能是小数也有可能是整数(这里只是举例子),那么你要对不同数据类型进行操作就要使用到泛型

2.如何定义泛型

在class后<泛型名>,当我们创建对象的时候往<>中填写具体类型的名称这样我们就知道传进来的数据是什么类型

image.png 同样我们也可以定义泛型函数,泛型列表等,使用方式也和泛型类一样,可以根据值的类型自动判断是具体类型

19.列表List(集合类中的一种)

1.为什么要使用列表

如果我们用数组来存一组数据,有一个缺点就是数组的大小是固定的,我们如果要往数组中添加数据或者删除数据都不方便,如果使用List列表我们可以很方便的添加数据,删除数据还有其他对数据的操作。

2.泛型列表

  1. 创建一个整型列表,使用泛型的形式规定数据类型

image.png

  1. 给列表设定初始值,长度会根据初始化的数据自动补足

image.png

3.往列表中添加元素

image.png 4.获取列表元素个数

image.png

  1. 列表容量变化机制
  • list.Count()获取的是列表元素的个数,list.Capacity()获取列表实际的长度也就是容量,当元素个数是0的时候,初始容量也为0,当元素个数小于等于大于0的时候容量为4,此后如果添加元素超过总容量的时候,那么将容量翻倍

image.png

  1. 在指定下标位置插入元素

image.png

  1. 移除指定的元素

image.png

  1. 移除指定下标位置的元素

image.png

  1. 查找元素在列表中第一次出现的下标位置
  • 从前往后查找IndexOf 从后往前查找LastIndexOf image.png
  1. 添加一整个列表元素到另外一个列表中

image.png

20.字典Dictionary(集合类的一种)

字典中存放的是一组组键值对

1.创建一个集合

image.png

2.往字典中添加元素

image.png

3.遍历字典中的键和值

  • 同时遍历键和值 image.png
  • 只遍历键名

image.png

  • 只遍历值

image.png

4.查找字典中是否含有对应键名和值

image.png

5.合并两个字典

image.png

21.练习题

  1. 练习一: 将一个数组中的奇数放到一个集合中,再将偶数放到另一个集合中,最终将两个集合合并为一个集合,并且奇数显示在左边,偶数显示在右边

image.png

  1. 练习二: 使用字典的方式计算出任意字符串中每个字符出现的次数 image.png

    string str7 = "maddffkihn";
            Dictionary<char, int> dic4 = new Dictionary<char, int>();
            for (int i = 0; i < str7.Length; i++)
            {
                //判断dic4有没有对应的键名
                if (dic4.ContainsKey(str7[i]))
                {
                    //如果有的话,自身加1
                    dic4[str7[i]]++;
                }else
                {
                    //如果一开始没有的话就设置出现为1
                    dic4.Add(str7[i], 1);
                }
            }

            foreach (KeyValuePair<char, int> k in dic4)
            {
                Console.WriteLine("字符为{0},字符出现次数为{1}次", k.Key, k.Value);
            }