Средство задания свойств списка

При реализации установщика для свойства List (в C #) плохо ли писать так:

    private List<string> _TheList = new List<string>();
    public List<string> TheList
    {
        get { return _TheList; }
        set { _TheList = value; }
    }

Если не записывать как:

    private List<string> _TheList = new List<string>();
    public List<string> TheList
    {
        get { return _TheList; }
        set { _TheList = new List<string>(value); }
    }

До сегодня я обычно использовал первое, но недавно я нашел некоторый код, который использовал второе, и мне показалось, что это, вероятно, правильный способ реализовать это.

Не будет использовать первый, потому что свойство TheList будет изменено, когда изменения вносятся во внешний список, который ему назначается. Например:

List<string> list = new List<string>();
list.Add("Hello");

var c = new someClass();
c.TheList = list;

Использование первого не нарушит ли следующий код инкапсуляции TheList:

list.Clear();

Теперь c.List также пуст, что может быть не тем, что мы хотели. Однако, используя последний подход, c.List не будет очищен.

5
задан mikesigs 9 December 2010 в 16:46
поделиться