📜  C#|索引器

📅  最后修改于: 2021-05-29 17:10:36             🧑  作者: Mango

先决条件:C#中的属性

索引器允许将类或结构的实例索引为数组。如果用户将为类定义索引器,则该类的行为将类似于虚拟数组。数组访问运算符(即[[] )用于访问使用索引器的类的实例。用户可以检索或设置索引值,而无需指向实例或类型成员。索引器几乎类似于“属性”索引器和属性之间的主要区别在于,索引器的访问器将使用参数。

句法:

[access_modifier] [return_type] this [argument_list]
{
  get 
  {
     // get block code
  }
  set 
  {
    // set block code
  }

}

在以上语法中:

  • access_modifier:它可以是公共的,私有的,受保护的或内部的。
  • return_type:可以是任何有效的C#类型。
  • this:是指向当前类对象的关键字。
  • arguments_list:这指定索引器的参数列表。
  • get {}和set {}:这些是访问器。

例子:

C#
// C# program to illustrate the Indexer
using System;
 
// class declaration
class IndexerCreation
{
 
    // class members
    private string[] val = new string[3];
     
    // Indexer declaration
    // public - access modifier
    // string - the return type of the Indexer
      // this - is the keyword having a parameters list
    public string this[int index]
    {
 
        // get Accessor
        // retrieving the values
        // stored in val[] array
        // of strings
        get
        {
 
            return val[index];
        }
 
        // set Accessor
        // setting the value at
        // passed index of val
        set
        {
 
            // value keyword is used
            // to define the value
            // being assigned by the
            // set indexer.
            val[index] = value;
        }
    }
}
 
// Driver Class
class main {
     
    // Main Method
    public static void Main() {
         
        // creating an object of parent class which
        // acts as primary address for using Indexer
        IndexerCreation ic = new IndexerCreation();
 
        // Inserting values in ic[]
        // Here we are using the object
        // of class as an array
        ic[0] = "C";
        ic[1] = "CPP";
        ic[2] = "CSHARP";
 
        Console.Write("Printing values stored in objects used as arrays\n");
         
        // printing values
        Console.WriteLine("First value = {0}", ic[0]);
        Console.WriteLine("Second value = {0}", ic[1]);
        Console.WriteLine("Third value = {0}", ic[2]);
     
    }
}


输出:

Printing values stored in objects used as arrays
First value = C
Second value = CPP
Third value = CSHARP

关于索引器的要点:

  • 索引器有两种类型,即维索引器多维索引。上面讨论的是一维索引器。
  • 索引器可能会超载。
  • 这些与Properties不同。
  • 这使对象可以以类似于数组的方式被索引。
  • set访问器将始终分配值,而get访问器将返回值。
  • this ”关键字始终用于声明索引器。
  • 要定义由设置的索引器分配的值,请使用“ value ”关键字。
  • 索引器在C#中也称为智能数组参数化属性
  • 索引器不能是静态成员,因为它是类的实例成员。