Если Ваша карта статична, то вместо карты, используйте вектор для хранения пар ключ/значение в ключевом порядке, двоичный поиск для поиска значений в журнале (n) время и векторный индекс для получения случайных пар в постоянное время. Можно обернуть вектор/двоичный поиск для сходства с картой с функцией произвольного доступа.
Во многих случаях, когда используется одномерный массив, он по существу используется как список фиксированного размера.
Лично я часто объявляю массив как IList
IList<string> strings = new string[] { ...};
Другой полезный член IList
Если вы используете C # 3.0, вы можете использовать метод расширения Enumerable.Count (), который работает во всех реализациях IEnumerable, включая списки, массивы и словари.
Это вызывает некоторые накладные расходы, но обычно это терпимо.