How to: Declare a Property with Mixed Access Levels (Visual Basic)

 

Updated: July 20, 2015

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

If you want the Get and Set procedures on a property to have different access levels, you can use the more permissive level in the Property statement and the more restrictive level in either the Get or Set statement. You use mixed access levels on a property when you want certain parts of the code to be able to get the property's value, and certain other parts of the code to be able to change the value.

For more information on access levels, see Access Levels in Visual Basic.

To declare a property with mixed access levels

  1. Declare the property in the normal way, and specify the less restrictive access level (such as Public) in the Property statement.

  2. Declare either the Get or the Set procedure specifying the more restrictive access level (such as Friend).

  3. Do not specify an access level on the other property procedure. It assumes the access level declared in the Property statement. You can restrict access on only one of the property procedures.

      Public Class employee
          Private salaryValue As Double
          Protected Property salary() As Double
              Get
                  Return salaryValue
              End Get
              Private Set(ByVal value As Double)
                  salaryValue = value
              End Set
          End Property
      End Class
    

    In the preceding example, the Get procedure has the same Protected access as the property itself, while the Set procedure has Private access. A class derived from employee can read the salary value, but only the employee class can set it.

Procedures
Property Procedures
Procedure Parameters and Arguments
Property Statement
Differences Between Properties and Variables in Visual Basic
How to: Create a Property
How to: Call a Property Procedure
How to: Declare and Call a Default Property in Visual Basic
How to: Put a Value in a Property
How to: Get a Value from a Property

Show: