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 |
---|---|
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. |
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. |
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:
|
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:
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.