Arrays would be the best option for you here.
The dictionary can be more scalable if you intend to add a few more custom types with minimal changes to the code. Retrieving an item from a dictionary is usually a 1 jump operation. But the only overhead associated with using the dictionary is serialization. Serialization will only be used when using SQLServer or StateServer to store your sessions.
I did some benchmarking where I used BinaryFormatter to serialize an array of int, List and Dictionary.
100000 .
20 .
:
int[] took 1955 ms to serialize
List<int> took 4135 ms to serialize
Dictionary<int,int> took 27917ms to serialize
, .
========================================
, , , 20 ( ) 10000000 .
int[] took 136 ms to serialize
List<int> took 184 ms to serialize
Dictionary<int,int> took 877 ms to serialize
, , , , .
, . .