C# 索引器

这篇具有很好参考价值的文章主要介绍了C# 索引器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下为个人理解,不喜勿喷:

索引器主要包含三个知识点:

1.索引器是针对于数组的属性

C#中属性是针对于字段的,通过set和get限制字段的访问与赋值。

同样,索引器也具有set和get,可以通过set和get限制对数组的访问与赋值。

2.索引器能够建立类与类内数组的索引

为便于解释,我们先建立一个包含数组a和b的类c

class C
{ public int[]a=new int[5];
  public int[]b=new int[5];
  public int this[int index]
    {
      get{return a[index];}
      set{a[index]=value;}
    }
}

在没有建立索引器时,要访问a[1]我们需要c.a[0],但在建立索引器之后,我们可以通过c[0]直接访问a[0],代码中建立了数组a与类c的索引,需要注意的是,我们可以建立a与c的索引,也可以建立b与c的索引,但是不能同时建立a,b与c的索引(这也很好理解,假定同时建立了a,b与c的索引,那么c[0]代表的是a[0]还是b[0]呢?)

3.索引器可以重载

private string[] namelist = new string[size];
public string this[int index]
      {
         get
         {
            string tmp;

            if( index >= 0 && index <= size-1 )
            {
               tmp = namelist[index];
            }
            else
            {
               tmp = "";
            }

            return ( tmp );
         }
         set
         {
            if( index >= 0 && index <= size-1 )
            {
               namelist[index] = value;
            }
         }
      }
      public int this[string name]
      {
         get
         {
            int index = 0;
            while(index < size)
            {
               if (namelist[index] == name)
               {
                return index;
               }
               index++;
            }
            return index;
         }

      }

代码摘自菜鸟教程-C#教程-C#索引器-重载索引器,网址:C# 索引器(Indexer) | 菜鸟教程 (runoob.com)

这个例子(只放了索引器和数组)中就重载了索引器,使访问时既可以c[0]通过索引号0访问,也可以通过c["name"]索引值访问。

另外,索引器还可以多参,似乎多个也是用来指定访问的,类似于重载中提到的,多参我也不太懂,就不写了。

还有一个问题就是:一个类只能与一个数组建立索引吗?即使有多个不同类型的数组存在?

希望大佬帮忙解答一下,感谢。文章来源地址https://www.toymoban.com/news/detail-408127.html

到了这里,关于C# 索引器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySql】MySql索引的作用&&索引的理解

    【MySql】MySql索引的作用索引的理解 索引是与效率挂钩的,所以没有索引,可能会存在问题 索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,

    2024年02月09日
    浏览(41)
  • 2023-08-15 Untiy进阶 C#知识补充5——C#6主要功能与语法

    ​ 注意:在此仅提及 Unity 开发中会用到的一些功能和特性,对于不适合在 Unity 中使用的内容会忽略。 一、概述 ​ C#6 的新增功能和语法主要包含: =运算符(C# 进阶内容) Null 传播器(C# 进阶内容) 字符串内插(C# 进阶内容) 静态导入 异常筛选器 nameof 运算符 二、静态导

    2024年02月12日
    浏览(35)
  • 2023-08-04 Untiy进阶 C#知识补充4——C#5主要功能与语法

    ​ 注意:在此仅提及 Unity 开发中会用到的一些功能和特性,对于不适合在 Unity 中使用的内容会忽略。 一、概述 C# 5 调用方信息特性(C# 进阶内容) 异步方法 async 和 await 二、回顾——线程 Unity 支持多线程 Unity 中开启的多线程不能使用主线程中的对象 Unity 中开启多线程后一

    2024年02月14日
    浏览(35)
  • 【C#进阶】C# 索引器

    序号 系列文章 13 【C#进阶】C# 特性 14 【C#进阶】C# 反射 15 【C#进阶】C# 属性 🍂 Hello大家好啊,我是作家桑。本文为大家介绍 C# 中的索引器。 索引器 允许类或结构的实例就像数组一样进行索引。无需显式指定类型或实例成员,即可通过运算符[]设置或检索索引值。索引器类

    2024年02月07日
    浏览(30)
  • 从InnoDB索引的数据结构,去理解索引

      该篇我们都是基于 InnoDB 存储引擎的大前提下讨论的,如文中未明确指出存储引擎,一律说的是 InnoDB. 要知道 InnoDB 的索引数据结构主要是 B+Tree . 按照物理实现方式,可以将索引划分为 聚簇索引 和 非聚簇索引 (也称为 二级索引 、 辅助索引 )。     ① 根节点 :B+Tree的最

    2024年02月08日
    浏览(47)
  • 2023-06-19 Untiy进阶 C#知识补充3——C#1-4主要功能与语法

    ​ 注意:在此仅提及 Unity 开发中会用到的一些功能和特性,对于不适合在 Unity 中使用的内容会忽略。 一、概述 C# 1(C# 进阶内容) 委托 事件 C# 2(C# 进阶内容) 泛型 匿名方法 迭代器 可空类型 C# 3 隐式类型(C# 进阶内容) 对象集合初始化(C# 进阶内容) Lambda 表达式(C

    2024年02月10日
    浏览(50)
  • DETR 个人理解

    目录 DETR 个人理解 概念说明 transformer网络结构 整体流程 损失计算 整体理解 结果说明 论文 代码 参考链接 个人拙见,仅供参考,欢迎指正交流 这篇论文还是挺重要的,因为是transforms用于目标检测的第一篇论文,之后很多的论文都是再此基础上写的,大体的流程是相近的。

    2024年01月20日
    浏览(36)
  • Mac系统介绍,个人理解

    Mac系统是一种由苹果公司开发的操作系统,它是一款基于Unix的系统,它拥有丰富的特性和功能,可以满足各种用户的需求。本文将介绍Mac系统的一些主要特性,包括安全性、可靠性、易用性、可定制性等方面。 一、安全性 Mac系统具有强大的安全性能,包括以下几个方面:

    2023年04月17日
    浏览(28)
  • Windows管道个人理解

    Windows管道(Pipe)是一种非常重要的操作系统特性,它允许在不同的进程之间传递数据。在Windows系统中,管道被广泛应用于各种场景中,例如进程间通信、数据处理、日志分析等。在本文中,我们将深入探讨Windows管道的概念、实现原理、应用场景以及使用方法等方面。 一、

    2023年04月27日
    浏览(24)
  • CMake个人理解和使用

    前言最简单的CMake工程项目搭建项目编译与执行项目扩展多源码项目个人感悟CMake管理子目录CMake管理子模块交叉编译前期准备编写编译脚本在Android项目中使用CMake目录结构构建静态库使用静态库配置Gradle配置CMake找到头文件找到静态库链接静态库在源码中使用扩展总结 CMake是

    2024年02月02日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包