Если числа не образуют диапазон 0 ... x (в этом случае вы могли бы просто использовать List<T>
или даже просто массив), я все равно пошел бы на подход Dictionary<int, Whatever>
. Это просто, работает и почти наверняка будет работать достаточно быстро для вас.
Это действительно похоже на микрооптимизацию, которую следует пропустить, пока вы не докажете, что у вас есть проблема. Как часто вы будете искать элементы в словаре по сравнению с другими операциями?
РЕДАКТИРОВАТЬ: Как говорит Тимви, здесь действительно можно сделать потенциальную экономию , если это действительно критично для производительности . Без общего типа ключа и вызовов виртуальных методов для извлечения хеш-кодов и сравнения значений вы, несомненно, могли бы добиться большего. Но я бы не стал доверять какой-либо сторонней коллекции так сильно, как встроенной, и я , конечно, не доверял бы своим собственным реализациям коллекции для чего-то нетривиального без огромного количества тестирования. ... это должно быть действительно существенное узкое место в приложении в целом, прежде чем я решу отойти от встроенных типов.