Avoid non-zero based integral indexers for collections

I am clearing out a backlog of Design Guidelines issues...

 

Do use zero based indexes if the
collection is integral indexed.

Annotation (BradA): In
designing the first version of the .NET Framework we went around and around on
using zero or one based indexes for collections. There was tons of prior
art for both, for example the C derived languages (C, C++, etc) where all zero
based and the VB world was one based. Early on we made a call that arrays
would be zero based and built that assumption deep into the implementation
making collections that are 1 based harder to implement in a performant
way.
But at this point the most impotant reason to make sure integral
indexed collections are zero based is simply consistency with the rest of the
platform.