Is it possible to have something like the following:
class C { public Foo Foos[int i] { ... } public Bar Bars[int i] { .
No you cant do it. Only methods that can have their signatures differ only by return type are conversion operators. Indexers must have different input parameter types to get it to compile.