It's an operator overload. Useful if you are writing a collection class for example where it would make sense to access it using array notation, e.g. collection[someIndex].
You could of course write a collection.GetElement(someIndex) function equivalent, but it's a style/readability thing.