Olá pessoal, neste artigo veremos mais alguns conceitos e criaremos um exemplo prático com Structs. Acompanhem:
Diferenças entre Classes e Structs – Apesar de serem muito parecidas sintaticamente, as classes e structs apresentam algumas diferenças, como descrito a seguir:
- Uma estrutura não pode ser herdada de uma classe base, ao contrário de uma classe;
- Em uma classe o compilador cria o construtor padrão no caso de não termos criado um construtor próprio. Já a estrutura não aceita a declaração de um construtor padrão, ou seja, um construtor que não tenha parâmetros. Isso porque o compilador sempre cria um construtor;
- Usando estrutura não podemos inicializar campos de instância em seu ponto de declaração, o que é possível nas classes. Qualquer estrutura tem como regra inicializar todos os seus campos em todos os seus construtores;
- A estrutura apresenta um construtor padrão (já mencionado anteriormente) criada pelo compilador, que sempre aplica os valores false, 0 ou null (dependendo do seu tipo) para os campos, como ocorre nas classes, mais os quais devemos tomar muito cuidado para que façam sentido e se comportem logicamente em relação ao valor da estrutura criado pelo construtor.
Falando especificamente da última diferença apresentada acima, podemos optar por não usar os valores padrões que o compilador atribui inicialmente. Neste caso, podemos criar um construtor que não é padrão se inicializarmos os campos com valores diferentes, considerando sempre que todos os campos em todos os construtores da estrutura devem ser inicializados de forma explícita, já que o compilador por si só não inicializará um campo no construtor.
Ok, chega de conceitos vamos à prática. Veja no código a seguir um exemplo do uso do Struct com datas, representando os campos dia, mês e ano:
struct Data
{
int dia, mes, ano;
public Data(int objDia, int objMes, int objAno)
{
this.dia = objDia;
this.mes = objMes;
this.ano = objAno;
}
}
Neste exemplo, o Struct é criado no próprio arquivo Program.cs, sendo que o método Main() deve ficar dentro da Struct. Confira como deve ficar o código completo:
struct Data
struct Data
{
int dia, mes, ano;
public Data(int objDia, int objMes, int objAno)
{
this.dia = objDia;
this.mes = objMes;
this.ano = objAno;
}
static void Main(string[] args)
{
//Instancio meu Struct, passando os parâmetros referentes ao dia, mês e ano e exibo ao usuário
Data objDataHoje = new Data(30, 01, 2011);
Console.WriteLine("\nData de Hoje: " + objDataHoje.dia + "/" + objDataHoje.mes + "/" + objDataHoje.ano + "\n");
//Atribuo a variável objDataHoje à variável objDataOntem, decremento o valor em 1 e exibo ao usuário
Data objDataOntem = objDataHoje;
objDataOntem.dia--;
Console.WriteLine("Data de Ontem: " + objDataOntem.dia + "/" + objDataOntem.mes + "/" + objDataOntem.ano + "\n");
//Atribuo a variável objDataHoje à variável objDataAmanha, incremento o valor em 1 e exibo ao usuário
Data objDataAmanha = objDataHoje;
objDataAmanha.dia++;
Console.WriteLine("Data de Amanhã: " + objDataAmanha.dia + "/" + objDataAmanha.mes + "/" + objDataAmanha.ano +
"\n");
Console.ReadKey();
}
}
Compilando a aplicação, temos o seguinte resultado:
Simples, né?
Assim finalizo o artigo. Muito obrigado a todos!
Um abraço, e até o próximo artigo.