Как и другие сообщения в этой теме, я укажу, что свойства в C # - это просто особые случаи функций доступа, которые вы упоминаете. Фактически, вы можете изобразить методы get_Property и set_Property в IL вашего объекта, у которых есть флаг, указывающий, что они являются свойствами, то же самое верно и для событий, которые реализуют методы с префиксами add_ и remove_.
Одно важное различие при работе с абстракциями заключается в том, будет ли установка свойства влиять на объект, кроме простого обновления внутреннего состояния или создания исключения PropertyChanged.
Если вы посмотрите на множество внутренних объектов BCL, свойства реализованы таким образом, что вы можете установить все свойства в любом порядке для настройки объекта. Если выполняется какая-либо сложная обработка, то обычно лучше выбрать метод, описывающий то, что должно произойти.