а) Синглтон
Глобальное статическое свойство не очень хорошая идея с точки зрения повторного использования кода. Если вы планируете получить доступ к глобальному статическому свойству из всего своего кода, вы делаете свой код довольно привязанным к этому конкретному приложению.
Если в вашем коде всегда был только один экземпляр Person
, то вы можете поместить этот синглтон в класс Person
, но, конечно, не в свой класс Program
. Однако обратите внимание, что использование классов Singleton обычно ограничивается службой ведения журналов или чем-то настолько распространенным, что оно, безусловно, никогда не изменится.
b) Одинаковая ссылка на объект
В этом случае вам не нужен одноэлементный экземпляр, а скорее передать такую же ссылку в ваш объект данных (Person или что-то еще) в каждую форму , которая доступ к нему. Если ваша форма является представлением части ваших данных, вы можете передавать в форму только эту часть данных, предпочтительно через простейший интерфейс.
Для изменения данных в одной форме, вероятно, потребуется обновить другие формы. Это то, что Model-View-Controller и аналогичные шаблоны помогают вам выполнить - уведомление о том, что данные были изменены где-то еще .
Например, реализуя интерфейс IPropertyNameChanged в своем классе Person
, вы можете уведомлять всех заинтересованных лиц (любую форму) о каждом изменении свойства. Проверьте это для примера: http://msdn.microsoft.com/en-us/library/ms229614.aspx. Прикрепив обработчик событий к этому событию в каждой форме, вы уведомите их всех о том, что они должны быть признаны недействительными.