В чем разница между Public Property, Friend и Public Variable в VB6 - PullRequest
9 голосов
/ 12 марта 2012

ОК, так что я понимаю, что ионные VB6, инкапсулированные свойства в классе, могут принадлежать к одной из трех категорий:

  • Открытое свойство
  • Друг
  • Открытая переменная

В чем разница между ними и как они соотносятся с общими и частными свойствами в более современном языке, таком как C #?

Ответы [ 3 ]

12 голосов
/ 12 марта 2012

Спецификаторы области действия 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.

2 голосов
/ 12 марта 2012
  • Public означает, что он доступен любым другим классам, которые ссылается на ваш проект / DLL.
  • Друг означает, что он доступен любые другие классы в вашей сборке (так что только исполняемый файл, который вы сделали класс в)

переменная и свойство почти одинаковы. Свойство является предпочтительным, поскольку вы можете установить, если другие классы могут установить или получить переменную (свойство инкапсулирует переменную)

В C # тоже самое, только вы используете Internal вместо Friend

1 голос
/ 11 августа 2016

частная собственность - это та собственность, которая используется нами и другим членом семьи.Но общественная собственность - это та собственность, которая используется всеми людьми нашего сообщества, общества или страны.

...