2.6C#函数成员之索引器(Indexer)

1.索引器声明

索引器的声明方式与属性相似,格式为索引器名称 this 后跟 分隔符 [ 和 ] 以及单个或多个参数。

value类型 this[key类型 参数名]
{
    //访问器
}
//this指向当前实例
public int this[string key]
{
    get { return storage.Find(key); }
    set { storage.SetAt(key, value); }
}
//Expression-bodied表达式声明法(读写索引器)
using System;
using System.Collections.Generic;

public class Sports
{
   private string[] types = { "Baseball", "Basketball", "Football",
                              "Hockey", "Soccer", "Tennis",
                              "Volleyball" };

   public string this[int i]
   {
      get => types[i];
      set => types[i] = value;
   }
}
//Expression-bodied表达式声明法(只读索引器)
public T this[int i] => arr[i];

2.访问器

类似于属性,索引器分为读写、只读和只写索引器。

//get
var item = someObject["key"];
//set
someObject["AnotherKey"] = item;

3.接口中的索引器

接口访问器不使用修饰符。

接口访问器通常没有实现,仅指示索引器为读写、只读还是只写。可以为接口中定义的索引器提供实现,但这种情况非常少。

public interface ISomeInterface
{
    //...

    // Indexer declaration:
    string this[int index]
    {
        get;
        set;
    }
}

4.重载

索引器支持重载。

索引器的签名由其形参的数目和形参的类型所组成,不包含索引器的类型或形参的名称。

5.修饰符

索引器支持 abstract、new、override、sealed、virtual 修饰符。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/8203.html

(0)
上一篇 2021年2月5日 20:01
下一篇 2021年2月6日 11:46

相关推荐

  • 1.4C#语言的类型(Type)

    C # 语言有两种类型:值类型 和 引用类型。值类型的变量直接存储数据,而引用类型的变量则存储对数据(称为“对象”)的引用。 System.Object类(别名object) 是所有类型的最终基类。值类型 派生自 System.ValueType类 (派生自 System.Object类)。派生自&…

    C#语言教程 2021年1月4日
    06650
  • 3.11C#类型之元组(ValueTuple)值类型和元组(Tuple)引用类型

    1.元组声明和初始化 元组提供了简洁的语法来将多个数据元素组合在一个轻型数据结构里。 通过声明 ( 和 ) 之间的成员的类型和名称来实例化元组。 2.访问成员 3.析构(Deconstruct)元组 析构的过程恰恰与元组的声明和初始化相反,析构是将已存在的元组析构成多个单独的变量…

    C#语言教程 2021年3月11日
    05870
  • 3.14C#类型之指针(Pointer)

    1.指针类型声明 类型为referent类型*的指针变量存储的是类型为referent类型的固定变量或可移动变量的地址。只有非托管类型可为referent类型。 任何指针类型可以分配 null。 2.继承 指针类型没有从 System.Object 继承。 3.类型转换 指针类型与 Sys…

    C#语言教程 2021年3月14日
    04920

发表回复

登录后才能评论