C# indexers are normally known as smart arrays. A C# indexer is a class property that enables you to access a member variable of a class or struct using the features of an array. In C#, indexers are generated using this keyword. Indexers in C# are suitable for both classes and structs.
Defining an indexer enables you to create a class like that can allows its items to be accessed an array. Instances of that class can be accessed using the  array access operator.