• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

04月
11
C#

索引器

发表于 2022-04-11 • 字数统计 2140 • 被 1,548 人看爆

概念

一组get和set访问器,与属性类似

索引器和属性

相同

  • 和属性—样,索引器不用分配内存来存储。
  • 和属性一样,索引器可以只有一个访问器,也可以两个都有。
  • 和属性一样,实现get和set访问器的代码不必一定要关联到某个字段或属性。这段代码可以做任何事情或什么也不做,只要get访问器返回某个指定类型的值即可。

不同

  • 索引器和属性都主要被用来访问其他数据成员,它们与这些成员关联,并为它们提供获取和设置访问。
    • 属性通常表示单独的数据成员。
    • 索引器通常表示多个数据成员。
  • 索引器总是实例成员。因此不能声明为static。

可以认为索引器是为类的多个数据成员提供get和set的属性

声明索引器

规则

  • 索引器没有名称。在名称的位置是关键字this。
  • 参数列表在方括号中间。
  • 参数列表中必须至少声明一个参数。

参考this用法四

语法

void this[int index]
{
    set {

    }

    get {

    }
}

索引器的set访问器

当使用索引器获取值时,可以通过一个或多个索引参数调用get访问器被。索引参数指示获取哪个值。

  • 它的参数列表和索引器声明中的相同。
  • 它返回与索引器相同类型的值。

和属性一样,不能显式调用get和set访问器

例

class Employee
{
    public string LastName;         //调用字段0
    public string FirstName;        //调用字段1
    public string CityOfBirth;      //调用字段2

    public string this[int index]
    {
        set
        {
            switch (index)
            {
                case 0:
                    LastName = value;
                    break;
                case 1:
                    FirstName = value;
                    break;
                case 2:
                    CityOfBirth = value;
                    break;
                default:
                    throw new ArgumentOutOfRangeException("index");
            }
        }

        get
        {
            switch (index)
            {
                case 0: return LastName;
                case 1: return FirstName;
                case 2: return CityOfBirth;
                default:
                    throw new ArgumentOutOfRangeException(null);
            }
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        Employee e = new Employee();
        e[0] = "LastName";
        Console.WriteLine($"{e[0]}");

        Console.ReadKey();

    }
}

结果

LastName

索引器重载

class MyClass
{
    public string this[int index]
    {
        get{}
        set{}
    }

    public string this[int index]
    {
        get{}
        set{}
    }
}

分享到:
分部类和分部方法
const和readonly关键字
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 4,091次看爆
  • JAVA_HOME环境配置问题 3,741次看爆
  • AssetBundle使用 3,509次看爆
  • VSCode配置C++开发环境 3,264次看爆
  • Lua反射 3,141次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图