Compartilhar via


ReadOnly (Visual Basic)

Especifica que uma variável ou propriedade pode ser lido mas não gravado.

Comentários

Rules

  • Declaration Context. Você pode usar ReadOnly somente no nível de módulo . Isso significa que a declaraçãodecontexto para um ReadOnly elemento deve ser uma classe, estruturaou móduloe não pode ser um arquivo de fonte , o namespaceou o procedimento.

  • Combined Modifiers. Não é possível especificar ReadOnly em conjunto com Static na mesma declaração.

  • Atribuindo um Valor. Código consumindo um ReadOnlydepropriedade 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ável 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 Declaração Const (Visual Basic) para declarar e atribuir um valor constante. Por exemplo, o Constdedemonstrativo não pode aceitar o tipo de dados que você deseja atribuir ou não poderá calcular o valor em tempo de compilar com uma expressão de constante. Você pode nem mesmo saiba o valor em tempo de compilar . Nesses casos, você pode usar um ReadOnly variável para armazenar um valor constante.

Observação de segurançaObservação sobre 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. The following example illustrates this.

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, é 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 chamada para o procedimento changeArrayElement, a matriz apontada por characterArray() suspensões "x", "M" e "z".

Observe que isso é semelhante ao declarar umparâmetro do procedimentoa ser ByVal (Visual Basic), que impede que o procedimento de alterar o argumento chamada propriamente dita, mas permite que ele altere seus participantes.

Exemplo

O exemplo a seguir define uma ReadOnlydepropriedade para a data em que um funcionário foi contratado. Os armazenamentos de classe , a propriedade valor internamente como um Private variávele 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

The ReadOnly modifier can be used in these contexts:

Dim Statement

Property Statement

Consulte também

Referência

WriteOnly (Visual Basic)

Outros recursos

Palavras-chave (Visual Basic)