これはC#じゃなくて、CやC++に言えることかもしれませんが、
List<int> test=new List<int>();
for(int i=0; i<100000000; i++)
test.Add(123456789);
このような膨大な要素のリストを作った場合でも、
プログラムが動くのは、変数はメモリではなくHDD領域に格納されているからでしょうか?
メモリに全て格納すれば、メモリ不足でプログラムは動きませんよね?