Это зависит от того, насколько серьезно вы относитесь к инкапсуляции способа хранения данных.Если вы работаете с легким классом и просто предоставляете хранилище, но хотите оставить решения о доступе полностью на усмотрение потребителя вашего класса, вы просто предоставляете его как стандартное свойство или делаете его авто-свойством.
public List<String> Parts { get; private set; }
Если вы хотите, чтобы переменная никогда не была нулевой, продолжайте использовать ваше личное поле поддержки и добавьте проверки.
private List<String> _Parts;
public IList<String> Parts
{
get
{
if (_Parts == null)
_Parts = new List<String>();
return _Parts;
}
private set
{
if (value != null)
_Parts = value;
}
}
Если, однако, вы хотите управлять синхронизацией или чем-то ещетакого рода, вы бы раскрыли методы, которые логичны для того, что вы делаете.
public void AddPart(String part);
public void RemovePart(String part);
public String GetPart(int index);
public IEnumerable<String> GetAllParts()
{
foreach(String part in _Parts)
yield return part;
}