Я сейчас работаю над проектом VB.Net и натолкнулся на что-то, что немного озадачило меня.Таким образом, у меня по существу есть следующая структура кода:
Public Class MainClass
Private Class HiddenClass
End Class
Private Class ChildA
Inherits From HiddenClass
End Class
Private Class ChildB
Inherits From HiddenClass
End Class
End Class
Public Class BuildingBlock
Protected lbl As Label
Protected btn As Button
Protected main As New MainClass()
End Class
Теперь я получаю сообщение об ошибке при установке main
как Protected
.В частности, я получаю сообщение об ошибке:
'main' cannot expose type 'MainClass' outside the project through class 'BuildingBlock'
Теперь я погуглил ошибку и обнаружил, что решение было следующим:
Изменить уровень доступа к переменной, параметру процедуры иливозврат функции должен быть как минимум таким же ограничивающим, как и уровень доступа ее типа данных.
Итак, я изменил его на Public
, и все было отлично.Но просто для проверки я изменил доступ к Private
, Friend
и Protected Friend
.У Protected Friend
все еще была ошибка, как я и ожидал, но у Private
и Friend
ее не было, даже если они имеют разные уровни доступа, чем у типа данных.
Поэтому мне интересно, почему яполучит эту ошибку только для перечисления этого объекта как Protected
, а не для любого другого уровня доступа.