Is it possible to have something like the following:
class C { public Foo Foos[int i] { ... } public Bar Bars[int i] { .
C# doesn't have return type overloading. You can define multiple indexers if their input parameters are different.