Передавать не ссылку, а объект - C#

Узнай цену своей работы

Формулировка задачи:

Вообщем: У меня есть интерфейс Int:
public interface Intr
{
    double Length { get; set; }
    string Name { get; set; }
    List<Point> GetPoints();
}
Есть классы InhInt1 и InhInt2:
public class InhInt1 : Intr
{
    public List<int> GetPoints()
    {
        return null;
    }
    public double Height { get; set; }
    public double Length { get; set; }
    public string Name { get; set; }
    public InhInt1()
    {
        Height = 10;
        Name = "Прямая";
        Length = 10;
    }
}
 
public class InhInt2 : Intr
{
    public List<int> GetPoints()
    {
        return null;
    }
    public double Width { get; set; }
    public double Length { get; set; }
    public string Name { get; set; }
    public InhInt2()
    {
        Width = 100;
        Name = "Косая";
        Length = 10;
    }
}
Есть программа:
int Main() {
    List<Intr> lInt = new List<Intr>();
    List<Intr> ltInt = new List<Intr>();
        int whatToAdd = 1;
    ltInt.Add(new InhInt1());
    ltInt.Add(new InhInt2());
    lInt.Add(ltInt[whatToAdd]);
        Console.WriteLine(ltInt[whatToAdd].Length);
    lInt[0].Length = 100;
        Console.WriteLine(ltInt[whatToAdd].Length);
}
Я хочу изменять только в lInt, но не в ltInt. Как это возможно сделать? Может каким списком классов?

Решение задачи: «Передавать не ссылку, а объект»

textual
Листинг программы
public class InhInt1 : Intr, ICloneable
public class InhInt2 : Intr, ICloneable

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы