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