Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Especifica que uma variável ou propriedade pode ser lida, mas não gravada.
Observações
Regras
Contexto da Declaração. Você só pode usar
ReadOnlyno nível do módulo. Isso significa que o contexto de declaração de umReadOnlyelemento deve ser uma classe, estrutura ou módulo e não pode ser um arquivo de origem, namespace ou procedimento.Modificadores combinados. Você não pode especificar
ReadOnlyjunto comStatica mesma declaração.Atribuindo um valor. O código que consome uma
ReadOnlypropriedade não pode definir seu valor. Mas o código que tem acesso ao armazenamento subjacente pode atribuir ou alterar o valor a qualquer momento.Você pode atribuir um valor a uma
ReadOnlyvariável apenas em sua declaração ou no construtor de uma classe ou estrutura na qual ela é definida.
Quando usar uma variável ReadOnly
Há situações em que você não pode usar uma Instrução Const para declarar e atribuir um valor constante. Por exemplo, a instrução Const pode não aceitar o tipo de dados que você deseja atribuir ou talvez você não consiga calcular o valor em tempo de compilação com uma expressão constante. Talvez você nem saiba o valor em tempo de compilação. Nesses casos, você pode usar uma ReadOnly variável para manter um valor constante.
Importante
Se o tipo de dados da variável for um tipo de referência, como uma matriz ou uma instância de classe, seus membros poderão ser alterados mesmo que a variável em si seja ReadOnly. O exemplo a seguir ilustra essa situação.
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
characterArray(1) = "M"c
End Sub
Quando inicializada, a matriz apontada contém characterArray() "x", "y" e "z". Como a variável characterArray é ReadOnly, você não pode alterar seu valor depois de inicializada; ou seja, não é possível atribuir uma nova matriz a ela. No entanto, você pode alterar os valores de um ou mais membros da matriz. Após uma chamada ao procedimento ChangeArrayElement, a matriz apontada contém characterArray() "x", "M" e "z".
Observe que isso é semelhante à declaração de um parâmetro de procedimento como ByVal, o que impede que o procedimento altere o argumento de chamada em si, mas permite que ele altere seus membros.
Exemplo
O exemplo a seguir define uma ReadOnly propriedade para a data em que um funcionário foi contratado. A classe armazena o valor da propriedade internamente como uma Private variável e somente o código dentro da classe pode alterar esse valor. No entanto, a propriedade é Publice qualquer código que possa acessar a classe pode ler a propriedade.
Class employee
' Only code inside class employee can change the value of hireDateValue.
Private hireDateValue As Date
' Any code that can access class employee can read property dateHired.
Public ReadOnly Property dateHired() As Date
Get
Return hireDateValue
End Get
End Property
End Class
O ReadOnly modificador pode ser usado nestes contextos: