C#
- Conceitos : Construtor (revisitado) - II
![]() |
Hoje vamos rever um conceito muito importante na linguagem C#: O Construtor. |
Continuando a
primeira parte do artigo vamos apresentar outros conceitos importantes sobre
construtores.
Construtores Estáticos
Um construtor estático é usado para inicializar quaisquer dados estáticos ou para executar uma ação específica que precisa ser executada apenas uma vez. Ele é chamado automaticamente antes que a primeira instância seja criada ou que quaisquer membros estáticos sejam referenciados.
Assim, uma classe pode também ter um construtor estático que inicializa membros estáticos do tipo.
Nota:
Membros estáticos são membros que usam o modificador
static e que estão associados coma classe e não com uma instância
particular da classe. Assim para acessar membros estáticos não precisamos criar
uma instância da classe.
Construtores estáticos não possuem parâmetros, e, se você não fornecer um
construtor estático para inicializar campos estáticos, o compilador do C#
fornecerá um construtor estático padrão que inicializa os campos estáticos com
os respectivos valores padrão, conforme a tabela a seguir:
Tipo de valor | Valor padrão |
---|---|
bool | false |
byte | 0 |
char | '\0' |
decimal | 0M |
double | 0,0D |
enum |
O valor produzido pela expressão (E)0, em que E é o identificador de enumeração. |
float | 0,0F |
int | 0 |
long | 0L |
sbyte | 0 |
short | 0 |
uint | 0 |
ulong | 0 |
ushort | 0 |
Obs: Os valores por referência como string são inicializados com o valor null;
A seguir temos a definição de uma classe Pessoa. Definimos nesta classe :
Na classe Pessoa o construtor estático inicializa o valor do campo estático idadeMinima. Ao lado vemos o mesmo código onde o construtor estático foi criado usando a definição de corpo da expressão.
Quando a primeira instância da classe Pessoa for criada o construtor estático será invocado para inicializar a classe e podemos acessar o valor do campo idadeMinima :
![]() |
|
![]() |
Note que idadeMinima esta associado à classe Pessoa e não à sua instância p.
Construtores estáticos têm as seguintes propriedades:
Invocando um construtor a partir de outro construtor
Podemos fazer uma chamada para um construtor a partir de outro construtor. Para isso podemos usar a palavra-chave this.
No exemplo a seguir a classe Pessoa possui 3 construtores. O construtor sem parâmetros Pessoa() usa a palavra-chave this(21) para invocar o construtor Pessoa(int idade) passando o valor 21:
Criando uma instância da classe Pessoa e usando o construtor sem parâmetros, iremos invocar o construtor Pessoa(int Idade) com o resultado mostrado abaixo:
Construtores privados
Os
construtores com o modificador de acesso "private"
são um caso um especial. Usando construtores privados não podemos criar um
objeto da classe nem podemos herdar da classe.
Mas podemos ter um conjunto de construtores públicos junto com os construtores
privados na classe, e, os construtores públicos podem acessar os construtores
privados de dentro da classe por meio do encadeamento de construtores. Para isso
usamos a palavra-chave this.
A seguir temos a classe MinhaClasse onde definimos um construtor publico MinhaClasse(int var) : this() e um construtor privado MinhaClasse() :
Podemos
criar um objeto da classe usando o construtor público :
MinhaClasse mc1 = new MinhaClasse(10);
E a sequência de execução será a seguinte:
Se tentarmos criar um objeto usando o construtor privado da classe vamos obter uma mensagem de erro indicando que o mesmo é inacessível.
Na terceira parte do artigo vou continuar a falar sobre construtores...
Pegue o
código do projeto aqui:
CShp_Construtor2.zip
"E por
que atentas tu no argueiro que está no olho de teu irmão, e não reparas na trave
que está no teu próprio olho ? "
Lucas 6:41
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
C# - 10 dicas para otimizar o seu código - Aumente o desempenho e eficácia de sua aplicação C#
C# - Usando expressões lambdas para implementar delegates - III
C# - Criando e usando uma classe ou método Genérico - Macoratti