Indexerare (programmering)
I objektorienterad programmering tillåter en indexerare att instanser av en viss klass eller struktur indexeras precis som arrayer. Det är en form av överbelastning av operatören .
Genomförande
Indexerare implementeras genom get- och set -accessorerna för operatören []
. De liknar egenskaper , men skiljer sig genom att inte vara statiska , och det faktum att indexers accessorer tar parametrar. Get- och set-accessorerna anropas som metoder med hjälp av parameterlistan för indexeringsdeklarationen, men set-accessorn har fortfarande den implicita värdeparametern
.
Exempel
Här är ett C#-exempel på användningen av en indexerare i en klass:
class Family { private List < string > _familyMembers = new List < string >(); public Family ( params string [ ] medlemmar ) { _familyMembers . AddRange ( medlemmar ); } public string this [ int index ] { // Get accessor get => _familyMembers [ index ]; // Setaccessorn med set => _familyMembers [ index ] = värde ; } public int this [ string val ] { // Hämta index efter värde (första element hittat) get => _familyMembers . FindIndex ( m => m == val ); } public int Längd => _familyMembers . Räkna ; }
Användningsexempel:
0
void Main () { var doeFamily = new Family ( "John" , "Jane" ); for ( int i = ; i < doeFamily . Length ; i ++) { var member = doeFamily [ i ]; var index = doeFamilj [ medlem ]; // samma som jag i det här fallet, men det visar indexeröverbelastning som gör det möjligt att söka doeFamily efter värde. Konsol . WriteLine ( $"{member} är medlemsnumret {index} för {nameof(doeFamily)}" ) ; } }
I det här exemplet används indexeraren för att få värdet på den n:e positionen och sedan för att få positionen i listan som refereras av dess värde. Utdata från koden är:
John är medlem nummer 0 i doefamiljen Jane är medlem nummer 1 i doefamiljen
Se även