Спецификаторы области действия Public
и Friend
определяют , могут ли клиенты в различных проектах видеть элемент.
Public
элементов будут доступны клиентскому коду в других проектах 1 и кода в том же проекте.
Friend
доступны только для кода в том же проекте, не для кода в других проектах.
Private
элементы доступны только для кода в том же классе.
Свойства отличаются от открытых переменных , поскольку с помощью свойств вы можете выполнить свой собственный код, когда клиент получает или устанавливает значение 2 . РЕДАКТИРОВАТЬ после комментария Динны: Также обратите внимание, что переменные могут быть переданы ByRef в функцию, и изменения будут работать как положено. Это НЕ относится к свойствам.
NB C # может быть более современным, но ИМХО обработка свойств VB6 и общих переменных на значительно лучше , чем обработка .Net.
ИМХО Microsoft допустила настоящую ошибку при создании этих различий между свойствами и открытыми полями в .Net. Не убежден? После первых выпусков .Net компиляторы C # и VB были изменены для поддержки автоматически реализуемых свойств . Они позволяют вам создавать свойства всего в одной строке кода, чтобы впоследствии можно было добавить логику для get / set, не вызывая проблем. ИМХО, это доказывает, что публичные переменные должны были быть неотличимы от свойств.
1 Предполагая, что тип вашего проекта действительно позволяет использовать ваши классы в других проектах (например, ActiveX DLL, OCX или ActiveX exe).
2 В процедурах Property Get
, Property Let
и Property Set
.