Как создать новую глубокую копию (клон) списка <T>?

В следующем фрагменте кода

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace clone_test_01
{

    public partial class MainForm : Form
    {

        public class Book
        {
            public string title = "";

            public Book(string title)
            {
                this.title = title;
            }
        }


        public MainForm()
        {
            InitializeComponent();

            List books_1 = new List();
            books_1.Add(  new Book("One")  );
            books_1.Add(  new Book("Two")  );
            books_1.Add(  new Book("Three")  );
            books_1.Add(  new Book("Four")  );

            List books_2 = new List(books_1);

            books_2[0].title = "Five";
            books_2[1].title = "Six";

            textBox1.Text = books_1[0].title;
            textBox2.Text = books_1[1].title;
        }
    }

}

Я используюBook тип объекта для созданияList и я заполняю его несколькими элементами, присваивая им уникальное название (изодин' к5').

Тогда я создаю.List books_2 = new List(books_1)

С этого момента я это знаюявляется клоном объекта списка, НО объекты книги изbook_2 до сих пор ссылки на объекты книги вbooks_1, Это'подтверждается внесением изменений в два первых элементаbooks_2, а затем проверять те же элементыbook_1 в .TextBox

books_1[0].title and books_2[1].title действительно были изменены на новые значения.books_2[0].title and books_2[1].title

СЕЙЧАС ВОПРОС

Как мы создаем новую печатную копиюList? Идея в том, чтоbooks_1 а такжеbooks_2 стать полностью независимыми друг от друга.

Я разочарован Microsoft не сделалне предлагает аккуратного, быстрого и простого решения, которое Ruby делает сclone() метод.

Что было бы действительно здорово от помощников, так это использовать мой код и изменить его с помощью работоспособного решения, чтобы он мог быть скомпилирован и работать. Я думаю, что это действительно поможет новичкам, пытающимся понять предлагаемые решения для этой проблемы.

РЕДАКТИРОВАТЬ: Обратите внимание, чтоBook класс может быть более сложным и иметь больше свойств. Я пытался сделать вещи простыми.