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日 03:18

相关推荐

  • 2.4C#函数成员之方法(Method)

    1.方法声明 2.方法分类 2.1成员方法 名称 修饰符 静态成员方法(static method) 用 static 修饰 实例成员方法(instance method) —————— 2.2本地函数 本地函数是嵌套在类型里成员内部的private方法。 名称 修饰符 静态本地函数(static local func…

    C#语言教程 2021年2月4日
    07280
  • 3.1C#语言的命名空间(Namespace)

    1.命名空间声明 C# 10 中可使用文件范围的命名空间声明,一个文件中的所有类型都在一个命名空间中。文件范围的命名空间不能声明嵌套的命名空间或第二个文件范围的命名空间。 可以在两个或多个声明中定义一个命名空间。 2.using指令 2.1导入其它命名空间的类型 2.2创建命名空间别名 using 指令的声明…

    C#语言教程 2021年3月1日
    07360
  • 5.3C#异步编程完整示例

    以下将用”如何烹饪早餐”示例来解释异步: 1.同步阻塞 同步准备的早餐大约花费了 30 分钟,因为总耗时是每个任务耗时的总和。 一个厨师在烹饪第一份早餐的时候,不会同时准备第二份早餐。 此段代码不仅会阻塞方法的调用方,还会阻塞方法内的后续代码执行。 2.异步无阻塞 FryEggsAsync、Fr…

    C#语言教程 2021年5月3日
    07230

发表回复

登录后才能评论