The indexer provides a way for classes to be accessed as arrays. In C #, the class indexer is implemented through the attribute of this.
Index. tostring ("D2") converts an index into a string with two character widths.
Using system;
Using system. Collections. Generic;
Using system. LINQ;
Using system. text;
Namespace classindexer
{
/// <Summary>
/// Define a class called Aclass, which has only one private variable
/// </Summary>
Class Aclass {
Private string _ name;
Public string name {
Get {return this. _ name ;}
Set {This. _ name = value ;}
}
Public Aclass (string name ){
This. _ name = Name;
}
}
/// <Summary>
/// Aclasscontainer class
/// </Summary>
Class aclasscontainer {
Private Aclass [] _ aclasslist;
Public aclasscontainer (){
This. _ aclasslist = new Aclass [10];
}
Public aclasscontainer (INT cap ){
This. _ aclasslist = new Aclass [Cap];
}
/// <Summary>
/// Class indexer by using int
/// </Summary>
/// <Param name = "Index"> </param>
/// <Returns> </returns>
Public Aclass this [int Index] {
Get {
If (index <0) | (index> This. _ aclasslist. Length) return NULL;
Else return this. _ aclasslist [Index];
}
Set {
If (index <0) | (index> This. _ aclasslist. Length) return;
Else this. _ aclasslist [Index] = value;
}
}
/// <Summary>
/// Class indexer by using string
/// </Summary>
/// <Param name = "name"> </param>
/// <Returns> </returns>
Public Aclass this [string name] {
Get {
Foreach (Aclass CLS in this. _ aclasslist ){
If (CLS. Name = Name) return CLS;
}
Return NULL;
}
}
}
Class Program
{
Static void main (string [] ARGs)
{
Int COUNT = 10;
Aclasscontainer classcontainer = new aclasscontainer (count );
For (INT Index = 0; index <count; index ++ ){
String name = index. tostring ("D2 ");
Classcontainer [Index] = new Aclass (name );
}
For (INT Index = 0; index <count; index ++)
{
Aclass CLS = classcontainer [Index];
System. Console. writeline ("classcontainer [{0}]. Name = \" {1} \ "", index, CLS. Name );
}
System. Console. writeline ();
For (INT Index = count-1; index> = 0; index --){
String name = index. tostring ("D2 ");
Aclass CLS = classcontainer [name];
System. Console. writeline ("classcontainer [{0}]. Name = \" {1} \ "", name, CLS. Name );
}
System. Console. Readline ();
}
}
}
Result:
Classcontainer [0]. Name = "00"
Classcontainer [1]. Name = "01"
Classcontainer [2]. Name = "02"
Classcontainer [3]. Name = "03"
Classcontainer [4]. Name = "04"
Classcontainer [5]. Name = "05"
Classcontainer [6]. Name = "06"
Classcontainer [7]. Name = "07"
Classcontainer [8]. Name = "08"
Classcontainer [9]. Name = "09"
Classcontainer [09]. Name = "09"
Classcontainer [08]. Name = "08"
Classcontainer [07]. Name = "07"
Classcontainer [06]. Name = "06"
Classcontainer [05]. Name = "05"
Classcontainer [04]. Name = "04"
Classcontainer [03]. Name = "03"
Classcontainer [02]. Name = "02"
Classcontainer [01]. Name = "01"
Classcontainer [00]. Name = "00"