Операции с List<t> c#:

List a = new List();
a.Add(1);
a.Add(2);
a.Add(3);
List b = a;
a.Clear();

Очищается и a и b
По видимому при присвоении тупа в b присваиваются указатели на элементы.
А как создать независимый от a объект?

using System;
using System.Collections.Generic;

namespace ConsoleApplication325478145789
{
class Program
{
static void Main(string[] args)
{
List a = new List();
a.Add(1);
a.Add(2);
a.Add(3);
foreach (int x in a) Console.Write(x + " ");
List b = new List();

a.ForEach(delegate(int n) { b.Add(n); });

a.Clear();
Console.WriteLine();
foreach (int x in b) Console.Write(x + " ");
Console.ReadKey();
}
}
}

Выделить память наверное как для a.

List b = new List(a);