ReadOnly (Visual Basic)
Especifica que uma variável ou propriedade pode ser lido mas não gravada.
Comentários
Regras
Contexto da Declaração. Você pode usar ReadOnly somente no nível de módulo.Isso significa que o contexto da declaração para um ReadOnly elemento deve ser uma classe, estrutura ou módulo e não pode ser um arquivo de origem, o namespace ou o procedimento.
Modificadores Combinados. Não é possível especificar ReadOnly em conjunto com Static na mesma declaração.
Atribuir um valor. Código consumindo um ReadOnly propriedade não é possível definir seu valor.Mas o código que tenha acesso ao armazenamento subjacente pode atribuir ou alterar o valor a qualquer momento.
Você pode atribuir um valor para um ReadOnly variáveis somente na sua declaração ou no construtor de uma classe ou estrutura na qual ela está definida.
Quando usar uma variável de somente leitura
Há situações em que você não pode usar um Instrução const (Visual Basic) para declarar e atribuir um valor constante.Por exemplo, o Const instrução poderá não aceitar o tipo de dados que você deseja atribuir ou você não poderá calcular o valor em tempo de compilação com uma expressão de constante.Você pode nem mesmo saiba o valor em tempo de compilação.Nesses casos, você pode usar um ReadOnly variável para armazenar um valor constante.
Observação de segurança |
---|
Se o tipo de dados da variável é um tipo de referência, como, por exemplo, uma matriz ou uma instância de classe, seus membros podem ser alterados, mesmo se a variável em si é ReadOnly.O exemplo a seguir ilustra isto: |
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub changeArrayElement()
characterArray(1) = "M"c
End Sub
Quando inicializado, a matriz apontada por characterArray() suspensões "x", "y" e "z".Porque a variável characterArray é ReadOnly, você não pode alterar seu valor, uma vez que ele é inicializado; ou seja, você não pode atribuir uma nova matriz a ele.No entanto, você pode alterar os valores de um ou mais dos membros da matriz.Após uma chamada para o procedimento changeArrayElement, a matriz apontada por characterArray() suspensões "x", "M" e "z".
Observe que isso é semelhante ao declarar um parâmetro de procedimento para ser ByVal (Visual Basic), que impede que o procedimento alterando o próprio argumento de chamada, 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.Os armazenamentos de classe, o valor da propriedade internamente como um Private código de variável e apenas dentro da classe pode alterar esse valor.No entanto, a propriedade é Public, e qualquer código que pode 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 modificador ReadOnly pode ser utilizado nestes contextos: