Partilhar via


Tipos de valor e tipos de referência

Há dois tipos de tipos no Visual Basic: tipos de referência e tipos de valor. As variáveis dos tipos de referência armazenam referências aos seus dados (objetos), enquanto as variáveis dos tipos de valor contêm diretamente os seus dados. Com tipos de referência, duas variáveis podem fazer referência ao mesmo objeto; portanto, as operações em uma variável podem afetar o objeto referenciado pela outra variável. Com tipos de valor, cada variável tem sua própria cópia dos dados, e não é possível que as operações em uma variável afetem a outra (exceto no caso do modificador ByRef em parâmetros).

Tipos de valor

Um tipo de dados é um tipo de valor se ele mantém os dados dentro de sua própria alocação de memória. Os tipos de valor incluem o seguinte:

  • Todos os tipos de dados numéricos

  • Boolean, Char, e Date

  • Todas as estruturas, mesmo que os seus membros sejam tipos de referência

  • Enumerações, uma vez que o seu tipo subjacente é sempre SByte, Short, , LongInteger, Byte, UShortUInteger, ouULong

Cada estrutura é um tipo de valor, mesmo que contenha membros do tipo de referência. Por esse motivo, tipos de valor como Char e Integer são implementados por estruturas do .NET Framework.

Você pode declarar um tipo de valor usando a palavra-chave reservada, por exemplo, Decimal. Você também pode usar a New palavra-chave para inicializar um tipo de valor. Isso é especialmente útil se o tipo tiver um construtor que usa parâmetros. Um exemplo disso é o Decimal(Int32, Int32, Int32, Boolean, Byte) construtor, que constrói um novo Decimal valor a partir das peças fornecidas.

Tipos de referência

Um tipo de referência armazena uma referência aos seus dados. Os tipos de referência incluem o seguinte:

  • String

  • Todas as matrizes, mesmo que seus elementos sejam tipos de valor

  • Tipos de classe, como Form

  • Delegados

Uma classe é um tipo de referência. Observe que cada matriz é um tipo de referência, mesmo que seus membros sejam tipos de valor.

Como cada tipo de referência representa uma classe subjacente do .NET Framework, você deve usar a palavra-chave New Operator ao inicializá-la. A instrução a seguir inicializa uma matriz.

Dim totals() As Single = New Single(8) {}  

Elementos que não são tipos

Os seguintes elementos de programação não se qualificam como tipos, porque você não pode especificar nenhum deles como um tipo de dados para um elemento declarado:

  • Espaços de nomes

  • Módulos

  • Evento

  • Propriedades e procedimentos

  • Variáveis, constantes e campos

Trabalhando com o tipo de dados do objeto

Você pode atribuir um tipo de referência ou um tipo de valor a uma variável do Object tipo de dados. Uma Object variável sempre contém uma referência aos dados, nunca aos dados em si. No entanto, se você atribuir um tipo de valor a uma Object variável, ele se comportará como se mantivesse seus próprios dados. Para obter mais informações, consulte Tipo de dados do objeto.

Você pode descobrir se uma Object variável está agindo como um tipo de referência ou um tipo de valor passando-a para o IsReferenceInformation método na classe do Microsoft.VisualBasic namespace. Information.IsReference retorna True se o conteúdo da variável representa um tipo de Object referência.

Consulte também