Heim > Backend-Entwicklung > C#.Net-Tutorial > Einfaches Verständnis und Verwendung von Indexern in C#

Einfaches Verständnis und Verwendung von Indexern in C#

高洛峰
Freigeben: 2016-12-17 09:14:25
Original
1371 Leute haben es durchsucht

Indexer ist ein spezielles Klassenmitglied, das den Zugriff auf Objekte auf Array-ähnliche Weise ermöglicht, wodurch das Programm intuitiver und einfacher zu schreiben ist.

1. Definition des Indexers

Klassenmitglieder in C# können von jedem Typ sein, einschließlich Arrays und Sammlungen. Wenn eine Klasse Array- und Sammlungsmitglieder enthält, vereinfachen Indexer den Zugriff auf Array- oder Sammlungsmitglieder erheblich.

Die Art und Weise, einen Indexer zu definieren, ähnelt in etwa der Definition eines Attributs. Seine allgemeine Form ist wie folgt:

[修饰符] 数据类型 this[索引类型 index]  
 
{  
    get{//获得属性的代码}                                                   
    set{ //设置属性的代码}  
}
Nach dem Login kopieren

Modifikatoren umfassen öffentlich, geschützt, privat, intern, neu, virtuell. versiegelt, überschreiben, abstrakt, extern.

Der Datentyp ist der Typ, der die Array- oder Sammlungselemente darstellt, auf die zugegriffen werden soll.

Der Indexertyp gibt an, welchen Indextyp der Indexer verwendet, um auf Array- oder Sammlungselemente zuzugreifen. Dies kann eine Ganzzahl oder eine Zeichenfolge sein. Dies stellt das Array oder Sammlungsmitglied dar, das dieses Objekt betreibt. Dies kann einfach It sein wird als Name des Indexers verstanden, daher können Indexer keine benutzerdefinierten Namen haben. Beispiel:

class Z  
{  
        //可容纳100个整数的整数集  
        private long[] arr = new long[100];  
        //声明索引器  
        public long this[int index]  
        {  
            get 
            { //检查索引范围  
                if (index < 0 || index >= 100)  
                {  
                    return 0;  
                }  
                else 
                {  
                    return arr[index];  
                }  
            }  
            set 
            {  
                if (!(index < 0 || index >= 100))  
                {  
                    arr[index] = value;  
                }  
            }  
   }
Nach dem Login kopieren

2. Verwendung von Indexern

Sie können über Indexer auf Array-Mitglieder zugreifen wie folgt:

Objektname[Index]

Der Datentyp des Index muss mit dem Indextyp des Indexers identisch sein. Beispiel:

Z  z=new  z();  
z[0]=100;  
z[1]=101;  
Console.WriteLine(z[0]);
Nach dem Login kopieren

bedeutet, zuerst ein Objekt z zu erstellen und dann über den Index auf die Array-Elemente im Objekt zu verweisen.

C# beschränkt den Typ des Indexers nicht auf Ganzzahl. Sie können beispielsweise Zeichenfolgen mit Indexern verwenden. Ein Indexer dieses Typs wird implementiert, indem nach einer Zeichenfolge innerhalb einer Sammlung gesucht und der entsprechende Wert zurückgegeben wird. Da Accessoren überlastet sein können, können String- und Integer-Versionen nebeneinander existieren.

Beispiel:

class DayCollection
{   
      string[] days={"Sun","Mon","Tues","Wed","Thurs","Fri","Sat"};  
      private int GetDay(string testDay)  
     {  
        int i=0;  
        foreach(string day in days)  
          {  
              if(day==testDay)  
                      return i;  
                      i++;  
           }  
         return -1;  
      }  
     public int this[string day]  
      {  
          get{return (GetDay(day))}  
      }  
}  
  
 
static void Main(string[] args)  
{  
     DayCollection week=new DayCollection();  
     Console.WriteLine("Fri:{0}",week["Fri"]);  
     Console.WriteLine("ABC:{0}",week["ABC"]);  
}
Nach dem Login kopieren

Ergebnis: Fr:5

ABC:-1

3. Indexer in der Schnittstelle

Indexer können auch in Schnittstellen deklariert werden. Es gibt zwei Unterschiede zwischen Schnittstellenindexern und Klassenindexern: Erstens verwenden Schnittstellenindexer keine Modifikatoren. Zweitens enthalten Schnittstellenindexer nur Zugriffsfunktionen get oder set und keine Implementierungsanweisungen. Der Zweck des Accessors besteht darin, anzugeben, ob der Indexer schreibgeschützt, schreibgeschützt oder schreibgeschützt ist. Wenn er schreibgeschützt ist, kann weder der Get- noch der Set-Accessor weggelassen werden Der Accessor wird weggelassen. Wenn er nur schreibbar ist, lassen Sie den Get-Accessor weg.

Zum Beispiel:

public interface IAddress  
{  
string this[int index]{get;set;}  
string Address{get;set;}  
string Answer();  
}
Nach dem Login kopieren

zeigt, dass die deklarierte Schnittstelle IAddress drei Mitglieder enthält: einen Indexer, eine Eigenschaft und eine Methode, wobei der Indexer lesbar und beschreibbar ist.

4. Vergleich von Indexern und Attributen

Indexer und Attribute sind beide Mitglieder der Klasse und in der Syntax sehr ähnlich. Die Verwendung von Indexern zum Betreiben von Sammlungsobjekten ist im Allgemeinen so einfach wie die Verwendung von Array-Eigenschaften in jeder benutzerdefinierten Klasse, was die Flexibilität der Feldmitglieder der Klasse erhöht.

Einfaches Verständnis und Verwendung von Indexern in C#




Mehr über Indexer in C# Für verwandte Artikel Für ein einfaches Verständnis und eine einfache Verwendung achten Sie bitte auf die chinesische PHP-Website!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage