I mean why is it necessary to specify the size in advance and then add fields using this[]?
Wouldn't be more natural having some sort of collection without the need of specifying the size in advance?
Like:
ResultsetFields fields = new ResultsetFields();
fields.Add(..)
fields.DefineField(...)
...
You can expand it, by calling Expand(n), if you need more fields. (and contract it, if you want to clean up slots). It's build on top of the EntityFields(2) object, which contains internally an array.