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 em nível de módulo.Isso significa que o contexto de declaração para um ReadOnly elemento deve ser uma classe, estrutura ou módulo e não pode ser um arquivo de fonte, o namespace ou o procedimento.
Modificadores Combinados. Não é possível especificar ReadOnly juntamente com Static na mesma declaração.
Atribuindo um valor. Código consumindo um ReadOnly propriedade não é possível conjunto 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 a um ReadOnly variável somente na sua declaração ou no construtor de uma classe ou estrutura em que é definido.
Quando usar uma variável de somente leitura
Há situações em que você não pode usar um Declaração Const (Visual Basic) para declarar e atribuir um valor constante. Por exemplo, a Const demonstrativo não pode aceitar o tipo de dados que você deseja atribuir ou você não poderá calcular o valor no time de compilar com uma expressão de constante. Você pode nem mesmo saiba o valor de time de compilar.Nesses casos, você pode usar um ReadOnly variável para conter um valor constante.
Observação de segurança: |
---|
Se o tipo de dados da variável é um tipo de referência, sistema autônomo uma matriz ou uma instância de classe, seus membros podem ser alterados, mesmo se a variável propriamente dito é 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, o array apontada por characterArray()suspensões "x", "y" e "z". Porque a variável characterArray é ReadOnly, você não pode alterar seu valor depois que ele é inicializado; ou seja, não é possível atribuir uma nova matriz a ele. No entanto, você pode alterar os valores de um ou mais dos membros da matriz.Após uma telefonar 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 a ser ByVal, que impede o procedimento de alterar o próprio argumento chamado mas permite-a para alterar seus membros.
Exemplo
O exemplo a seguir define um ReadOnly propriedade para a data em que um funcionário foi contratado. A classe armazena o valor da propriedade internamente sistema autônomo um Private variável e somente o código dentro da classe podem 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: