Если у меня есть частная переменная, которая, по моему мнению, требует публичного доступа на более позднем этапе, я просто создаю свойство, которое использует ее как свой закрытый член, например:
private List<string> listItems = new List<string>();
Public List<string> ListItems
{
get{return listItems;}
set{listItems = value;}
}
Это позволяет вам создавать публичный доступ к данным без необходимости рефакторинга какого-либо кода. Это также позволяет вам инициализировать данные в приватном члене, и не нужно делать это в конструкторе.
Еще одним преимуществом является то, что любые изменения данных, которые вы хотите выполнить для любого, кто имеет доступ к общедоступному свойству, могут быть сделаны в получателе свойства.
Несмотря на то, что в VS2008 введены автоматические свойства как функция, я все же предпочитаю стиль свойств VS2005.