索引器的示例

时间:2015-09-25 16:18:35

标签: c# indexer

我正在学习索引器,并且偶然发现了我正在阅读的教程的解释和示例。

它说:

"索引器允许对象进行索引,例如数组。为类定义索引器时,此类的行为类似于虚拟数组。然后,您可以使用数组访问运算符([])"

访问此类的实例

我对此段的理解是您可以使用数组访问操作符访问该类的实例。

但我真正不理解的解释如下:

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

我没有得到"它将实例数据分成更小的部分并为每个部分编制索引"

之后它给出了一个Indexer的例子:

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

在该段落之前,我认为索引器将索引的表单和该类的实例作为一个数组,但那个&#34;较小的部分&#34;我真的不明白。

1 个答案:

答案 0 :(得分:0)

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

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

其他对象可能有其他索引器执行其他操作。例如,DataTable DataRowCollection有一个索引器,它按编号返回行,并且有一个索引器,它按名称返回列:

't'