首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Indexer实例

Indexer实例
EN

Stack Overflow用户
提问于 2015-09-25 16:18:34
回答 1查看 650关注 0票数 0

我正在学习有关索引器的知识,无意中发现了我正在阅读的教程的说明和示例。

上面写着:

“索引器允许对对象进行索引,例如数组。当为类定义索引器时,该类的行为类似于虚拟数组。然后可以使用数组访问操作符()”访问该类的实例。

我对这一段的理解是,您可以使用数组访问操作来访问该类的实例。

但我真正不明白这个解释的是以下几点:

索引器的行为声明在某种程度上类似于属性。与属性类似,使用get和set访问器来定义索引器。然而,属性返回或设置特定的数据成员,而索引器则从对象实例返回或设置特定值。换句话说,它将实例数据分解为更小的部分和索引,每个部件、获取或设置每个part".

我没有得到“它将实例数据分解为更小的部分和索引每个部分”

在此之后,给出了一个Indexer示例:

代码语言:javascript
复制
using System;
namespace IndexerApplication
{
   class IndexedNames
   {
      private string[] namelist = new string[size];
      static public int size = 10;
      public IndexedNames()
      {
         for (int i = 0; i < size; i++)
         namelist[i] = "N. A.";
      }

      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;
            }
         }
      }

      static void Main(string[] args)
      {
         IndexedNames names = new IndexedNames();
         names[0] = "Zara";
         names[1] = "Riz";
         names[2] = "Nuha";
         names[3] = "Asif";
         names[4] = "Davinder";
         names[5] = "Sunil";
         names[6] = "Rubic";
         for ( int i = 0; i < IndexedNames.size; i++ )
         {
            Console.WriteLine(names[i]);
         }

         Console.ReadKey();
      }
   }
}

在那一段之前,我认为索引器将索引类的索引和实例作为数组,但是“较小的部分”我真的不明白。

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 16:26:41

它只是给出了一个使用索引器的例子。从数组返回元素在某种程度上是返回数组的一部分。

但它不一定是一个数组。例如,String有一个索引器,它在该位置返回字符,例如,"test"[0]在零位置返回字符,即't'

其他对象可能有其他索引器来执行其他事情。例如,DataTable DataRowCollection有一个按数字返回行的索引器,还有一个按名称返回列的索引器:

代码语言:javascript
复制
myDataTable.Rows[12]["ID"].Value
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32786526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档