Membros de Tipos

O tempo de execução permite que você defina os membros do seu tipo: eventos, campos, tipos aninhados, métodos e propriedades.Cada membro tem uma assinatura.A tabela a seguir descreve os membros usados no .NET Framework.

Membro

Descrição

Evento

Define um incidente ao qual pode-se responder e define métodos para inscrever em, cancelar a inscrição em e levantar um evento.Eventos são frequentemente usados para informar outros tipos de alterações de estado.

Campo

Descreve e contém parte do estado do tipo.Campos podem ser de qualquer tipo suportado pelo ambiente de execução.

Tipo aninhado

Define um tipo dentro do escopo do tipo delimitador.

Método

Descreve as operações disponíveis no tipo.A assinatura do método especifica os tipos dos argumentos e o valor de retorno do método.

O construtor é um tipo especial de método que cria novas instâncias de um tipo.

Propriedade

Nomeia um valor ou um estado do tipo e define métodos para obter ou definir o valor da propriedade.Propriedades podem ser tipos primitivos, coleções de tipos primitivos, tipos definidos pelo usuário ou coleções de tipos definidos pelo usuário.Propriedades são frequentemente usadas para manter a interface pública de um tipo, independente da representação real do tipo.

Características de um Membro

O CTS (Common Type System) permite que os membros possuam uma variedade de características, mas as linguagens não necessariamente suportam todas elas.A tabela a seguir descreve as características de um membro.

Característica

Pode ser aplicada a

Descrição

abstrata

Métodos, propriedades e eventos

O tipo não fornece a implementação do método.Tipos que herdam métodos abstratos e tipos que implementam interfaces com métodos abstratos devem fornecer uma implementação para o método.A única exceção é quando o tipo derivado é um tipo abstrato.Todos os métodos abstratos são virtuais.

private, family, assembly, family e assembly, family ou assembly, ou public

Todos

Define a acessibilidade de um membro:

Particular

Acessível somente dentro do tipo do membro ou dentro de um tipo aninhado.

family

Acessível dentro do tipo do membro e dentro de um tipo derivado que herda do tipo do membro.

Assembly

Acessível somente no assembly no qual o tipo é definido.

family e assembly

Acessíveis somente dentro de tipos que se cumprem tanto as restrições de acesso da característica family quanto da característica assembly.

family ou assembly

Acessíveis somente dentro de tipos que se cumprem as restrições de acesso da característica family ou as restrições da característica assembly.

Público

Acessíveis dentro de qualquer tipo.

final

Métodos, propriedades e eventos

Um método virtual não pode ser substituído em um tipo derivado.

initialize-only

Campos

O valor pode apenas ser inicializado, não pode ser gravado outro valor após a inicialização.

instance

Campos, métodos, propriedades e eventos

Se um membro não estiver marcado como static (C# e C++), Shared (Visual Basic), virtual (C# e C++), ou Overridable (Visual Basic), ele é um membro de instância (não há palavra-chave de instância).Haverá tantas cópias de tais membros na memória quanto há objetos que a usam.

literal

Campos

O valor atribuído ao campo é um valor fixo, conhecido em tempo de compilação, de um tipo de valor interno.Às vezes, campos marcados como literal são chamados de constantes.

newslot ou override

Todos

Define como o membro interage com os membros herdados que possuem a mesma assinatura:

newslot

Oculta membros herdados que possuem a mesma assinatura.

override

Substitui a definição de um método virtual herdado.

O padrão é newslot.

estático

Campos, métodos, propriedades e eventos

O membro pertence ao tipo no qual está definido e não a uma instância particular do tipo. O membro existe mesmo que uma instância de tipo não tenha sido criada. Ele é compartilhado entre todas as instâncias do tipo.

virtual

Métodos, propriedades e eventos

O método pode ser implementado por um tipo derivado e pode ser chamado estaticamente ou dinamicamente.Se foi usada uma chamada dinâmica, o tipo da instância que fez a chamada em tempo de execução determina qual implementação do método deve ser chamada, e não o tipo conhecido em tempo de compilação.Para chamar um método virtual estaticamente, pode ser necessário converter a variável (usando o operador cast) para um tipo que usa a versão desejada do método.

Sobrecarga

Cada membro de tipo tem uma assinatura exclusiva.Assinaturas de método consistem do nome do método e de uma lista de parâmetros (a ordem e os tipos dos argumentos do método).Mais de um método com o mesmo nome pode ser definido em um tipo, desde que as assinaturas sejam diferentes.Quando dois ou mais métodos com o mesmo nome são definidos, diz-se que o método está sobrecarregado.Por exemplo, em System.Char , IsDigit está sobrecarregado.Um método utiliza um Char e retorna um Boolean .O outro método usa um String e um Int32 e retorna um Boolean .Listas de parâmetros também podem ser qualificadas pela restrição varargs, que indica que o método dá suporte para uma lista de argumentos de variáveis.

Herança, Substituição e Membros Ocultos

Um tipo derivado herda todos os membros do seu tipo base, ou seja, esses membros estão definidos no tipo derivado e disponíveis para o mesmo.O comportamento, ou qualidades, de membros herdados pode ser modificado de duas maneiras:

  • Um tipo derivado pode ocultar um membro herdado definindo um novo membro com a mesma assinatura.Isso pode ser feito quando deseja-se tornar um membro público em privado ou para definir um novo comportamento para um método herdado que está marcado como final.

  • Um tipo derivado pode substituir um método virtual herdado.O método de substituição fornece uma nova definição do método que será chamado baseada no tipo do valor no tempo de execução em vez do tipo de variável conhecido no tempo de compilação.Um método pode substituir um método virtual somente se o método virtual não estiver marcado como final e o novo método for pelo menos tão acessível quanto o método virtual.

Consulte também

Conceitos

Definições de Tipo

Outros recursos

Common Type System

Diretrizes de design de membro

Diretrizes de design de tipo