Definições de Tipo
Você define novos tipos a partir de tipos existentes.Tipos de valor interno, ponteiros, matrizes e delegados são definidos quando eles são usados e são referidos como tipos implícitos.Tipos podem ser aninhados; ou seja, um tipo pode ser um membro de outro tipo.
Uma definição de tipo inclui:
Qualquer atributo definido no tipo.
A visibilidade do tipo.
O nome do tipo.
O tipo base do tipo.
Qualquer interface implementada pelo tipo.
Definições para cada um dos membros do tipo.
Atributos
Atributos fornecem metadados adicionais definidos pelo usuário.Atributos podem ser aplicados a praticamente qualquer elemento de linguagem — tipos, propriedades, métodos e assim por diante.
Tipo de acessibilidade
Todos os tipos têm um modificador de acessibilidade que rege sua acessibilidade a outros tipos.A tabela a seguir descreve a acessibilidade de tipo suportada pelo runtime.
Acessibilidade |
Descrição |
---|---|
Público |
O tipo é acessível por todos os assemblies. |
Assembly |
O tipo é acessível somente dentro do assembly. |
A acessibilidade de um tipo aninhado depende do seu domínio de acessibilidade, que é determinado pelas acessibilidade declarada do membro e pelo domínio de acessibilidade do tipo imediatamente contido.Entretanto, o domínio de acessibilidade de um tipo aninhado não pode exceder o do tipo contido.
O domínio de acessibilidade de um membro aninhado M declarado em um tipo T de um programa P é definido como segue (observando que M, por si só, pode ser um tipo):
Se a acessibilidade declarada de M for public, o domínio de acessibilidade de M é o domínio de acessibilidade de T.
Se a acessibilidade declarada de M for protected internal, o domínio de acessibilidade de M é a interseção do domínio de acessibilidade de T com o do texto do programa de P, e o texto do programa de qualquer tipo derivado de T, declarado fora de P.
Se a acessibilidade declarada de M for protected, o domínio de acessibilidade de M é a interseção do domínio de acessibilidade de T com o texto do programa de T, e qualquer tipo derivado de T.
Se a acessibilidade declarada de M for internal, o domínio de acessibilidade de M é a interseção do domínio de acessibilidade de T com o texto de programa de P.
Se a acessibilidade declarada de M for private, o domínio de acessibilidade de M é o texto de programa de T.
Nomes de Tipos
O CTS impõe apenas duas restrições de nomes:
Todos os nomes são codificados como sequências de caracteres Unicode (16 bits).
Não são permitidos nomes que tenham um valor (16 bits) incorporado de 0x0000.
Todas as comparações são feitas em uma base byte-by-byte, e possuem, portanto, diferenciação de maiúsculas e minúsculas e são independentes de local
Embora um tipo possa fazer referência a tipos de outros módulos e assemblies, um tipo é totalmente definido dentro de um módulo.Nomes de tipo precisam somente ser exclusivos em um assembly.Para identificar totalmente um tipo, o nome do tipo deve ser qualificado pelo assembly que contém a implementação do tipo.Para mais informações, consulte Especificando Nomes de Tipos Totalmente Qualificados.
Tipos Base e Interfaces
Um tipo pode herdar valores e comportamentos de outro tipo.O CTS não permite que tipos sejam herdados de mais de um tipo base.
Um tipo pode implementar qualquer número de interfaces.Para implementar uma interface, um tipo deve implementar todos os membros virtuais da interface.Um método virtual pode ser implementado por um tipo derivado e pode ser chamado estática ou dinamicamente.Para obter mais informações sobre membros virtuais, consulte Membros de Tipos.Para obter mais informações sobre herança e interfaces, consulte Classes e Interfaces.
Membros de Tipos
O comportamento e o estado de um tipo são definidos pelos membros do tipo: eventos, campos, tipos aninhados, métodos e propriedades.Para mais informações, consulte Membros de Tipos.