Indexer (Indexer) ist ein neuer Typ von Klassenmitglied, der von C# eingeführt wurde und das Objekt kann mit ebenso bequem und intuitiv referenziert werden wie mit Array. Indexer sind Eigenschaften sehr ähnlich, Indexer können jedoch Parameterlisten haben und nur auf Instanzobjekte reagieren, nicht direkt auf Klassen. Mit einer Klasse, die einen Indexer definiert, können Sie wie auf ein Array darauf zugreifen [ ] Operator greift auf Mitglieder einer Klasse zu. (Natürlich gibt es viele erweiterte Anwendungen, z. B. das Zuordnen von Arrays über Indexer usw.)
Indexer ermöglichen die Indizierung von Instanzen einer Klasse oder Struktur genau wie ein Array. Indexer ähneln Eigenschaften, außer dass ihre Werte Funktionen Parameter annehmen. Indexer ermöglichen die Indizierung von Instanzen von Klassen oder Strukturen auf die gleiche Weise wie Arrays, mit der Ausnahme, dass der Indexerzugriff Parameter erfordert.
Indexer-Übersicht
Ganzzahlwerts indizieren; es liegt an Ihnen, den spezifischen Suchmechanismus zu definieren.
Indexer- und Array-Vergleich:
(1) Der Indexwerttyp (Index) des Indexers ist nicht eingeschränkt
(2) Der Indexer ermöglicht Überladung
(3) Der Indexer ist keine Variable
Indexer-Unterschiede aus Attributen
(1) Attribute werden durch Namen identifiziert, und Indexer werden durch Funktionen identifiziert (2) Indexer können überlastet werden, Eigenschaften können nicht (3) Indexer können nicht als statisch, Attribute können sein: Ein einfaches Indexerbeispiel Überladung von Indexer Multiparameter-Indexerusing System;
using System.Collections;
public class IndexerClass
{
private string[] name = new string[2];
//索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
public string this[int index]
{
//实现索引器的get方法
get
{
if (index < 2)
{
return name[index];
}
return null;
}
//实现索引器的set方法
set
{
if (index < 2)
{
name[index] = value;
}
}
}
}
public class Test
{
static void Main()
{
//索引器的使用
IndexerClass Indexer = new IndexerClass();
//“=”号右边对索引器赋值,其实就是调用其set方法
Indexer[0] = "张三";
Indexer[1] = "李四";
//输出索引器的值,其实就是调用其get方法
Console.WriteLine(Indexer[0]);
Console.WriteLine(Indexer[1]);
}
}
Verwenden Sie die -Zeichenfolge als Index, um auf den Indexer zuzugreifen public class IndexerClass
{
//用string作为索引器下标的时候,要用Hashtable
private Hashtable name = new Hashtable();
//索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
public string this[string index]
{
get { return name[index].ToString();
set { name.Add(index, value); }
}
}
public class Test
{
static void Main()
{
IndexerClass Indexer = new IndexerClass();
Indexer["A0001"] = "张三";
Indexer["A0002"] = "李四";
Console.WriteLine(Indexer["A0001"]);
Console.WriteLine(Indexer["A0002"]);
}
}
public class IndexerClass
{
private Hashtable name = new Hashtable();
//1:通过key存取Values
public string this[int index]
{
get { return name[index].ToString(); }
set { name.Add(index, value); }
}
//2:通过Values存取key
public int this[string aName]
{
get
{
//Hashtable中实际存放的是DictionaryEntry(字典)类型,如果要遍历一个Hashtable,就需要使用到DictionaryEntry
foreach(DictionaryEntry d in name)
{
if (d.Value.ToString() == aName)
{
return Convert.ToInt32(d.Key);
}
}
return -1;
}
set
{
name.Add(value, aName);
}
}
}
public class Test
{
static void Main()
{
IndexerClass Indexer = new IndexerClass();
//第一种索引器的使用
Indexer[1] = "张三";//set访问器的使用
Indexer[2] = "李四";
Console.WriteLine("编号为1的名字:" + Indexer[1]);//get访问器的使用
Console.WriteLine("编号为2的名字:" + Indexer[2]);
Console.WriteLine();
//第二种索引器的使用
Console.WriteLine("张三的编号是:" + Indexer["张三"]);//get访问器的使用
Console.WriteLine("李四的编号是:" + Indexer["李四"]);
Indexer["王五"] = 3;//set访问器的使用
Console.WriteLine("王五的编号是:" + Indexer["王五"]);
}
}
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in Indexer in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!