• 第15天c#基础索引器


    索引器

    索引器(Indexer)是C#引入的一个新型的类成员,它使得类的对象可以像数组一样,使用下标访问,方便直观。索引器的功能类似于属性,它具有get和set方法,可以用来控制类中的数组、集合类成员。

    访问修饰符 class 类名
    {
        访问修饰符 返回值的数据类型 this[索引值的数据类型 标识符]
        {
            get { 获得数据的代码; }
            set { 设置数据的代码; }
        }
    }

    实例

        class Program
        {
            static void Main(string[] args)
            {
                Person p1 = new Person();
                //赋值
                p1[0] = "小玲";
                p1[1] = "小一";
                p1[2] = "小二";
                p1[3] = "小三";
                p1[4] = "小四";
                p1[5] = "小五";
                p1[6] = "小六";
                p1[7] = "小七";
                //取值
                for (int i = 0; i < Person.size; i++)
                {
                    Console.WriteLine(p1[i]);
                }
    
                //根据名字取索引值
                Console.WriteLine(p1["小七"]);
            }
        }
        class Person
        {
            string[] name = new string[size];
            static public int size = 10;            //size要用static修饰 不然要放name上面
            public Person()
            {
                for (int i = 0; i < name.Length; i++)
                {
                    name[i] = "";
                }
            }
            //格式:访问修饰符 类型 this[参数列表]
            //      {
            //          get块;
            //          set块;
            //      }
            public string this[int num]
            {
                get {
                    return name[num];
                }
                set
                {
                        name[num] = value;
                }
                
            }
    
            //重载索引器
            public int this[string str]
            {
                get
                {
                    int index = 0;
                    while(true)
                    {
                        if(name[index]== str)
                        {
                            return index;
                        }
                        index++;
                    }
                    return index;
                }
            }
        }

    结果

    1.当索引器赋值时,执行set块代码

    2.当通过索引器访问时,执行get块代码

    总结

    1.索引器不能用static修饰符进行修饰

    2.索引器没有名字,以this关键字来标识

    3.索引器允许重载

    4.索引器的参数类型不限定,参数个数不限定

    重载运算符

    定义

    1.通过使用operator关键字定义静态成员函数来重载运算符

    2.注意:必须用public修饰且必须是类的静态的方法

        class Program
        {
            static void Main(string[] args)
            {
                Vector v1 = new Vector(10, 10);
                Vector v2 = new Vector(20, 20);
                Vector v3 = v1 + v2;
                Console.WriteLine(v3);
            }
        }
    
        class Vector
        {
            public int x;
            public int y;
    
            public Vector(int x, int y)
            {
                this.x = x;
                this.y = y;
            }
    
            //格式:访问修饰符 static 返回值类型 operator 运算符(参数列表)
            //      {
            //          return 返回值;
            //      }
            public static Vector operator +(Vector v1, Vector v2)
            {
                Vector v3 = new Vector(v1.x + v2.x, v1.y + v2.y);
                return v3;
            }
    
            public override string ToString()           //重写ToString方法输出参数
            {
                return string.Format("({0},{1})", x, y);
            }
    
        }

    作用

    通过重载运算符可以是类或结构体的实例进行相关运算或比较运算

    可重载的对象

    总结

    1.重载的运算符是几元那么参数就有几个

    2.对于二元运算符,第一个参数是运算符左边的值,第二个参数是运算符右边的值

    3.比较运算符要求成对重载,例如重载“==”的话必须重载“!=”

    4.比较运算符的返回值必须是bool类型

    5.true和false运算符必须成对重载

  • 相关阅读:
    数据结构之内部排序--希尔排序
    数据结构之内部排序--直接插入排序
    MySQL
    力扣115,不同的子序列,动态规划,最大公共子序列问题变形
    算法复习——贪心
    算法复习——分治算法
    为什么我的打印机只能纵向打印不能横向打印
    git创建新的分支
    poj138——建立雷达,贪心,求线段交集
    Oracle数据库学习笔记
  • 原文地址:https://www.cnblogs.com/yifengs/p/14089171.html
Copyright © 2020-2023  润新知