Desenvolvimento - C#

Structs e Enums em C# - Certificação 70-536

Veja neste artigo como criar e utilizar structs e enums no .NET Framework com a linguagem C#. Este tema é abordado na prova para a certificação 70-536.

por Joel Rodrigues



Structs

Estruturas, também chamados de structs são tipos de dados definidos pelo usuário e que consistem em um conjunto de variáveis simples. Structs são tipos valor e como tal são armazenados no stack e, cada vez que alteramos seu valor, um novo endereço de memória é utilizado. Por outro ponto de vista, porém, structs se comportam como classes.

Apesar das funcionalidades semelhantes, structs são geralmente mais eficientes do que classes em termos de consumo de recursos. Para decidir quando usar uma estrutura ao invés de classes deve-se analisar se o objeto:

  • Possui instâncias com tamanho de até 16 bytes.
  • Não é alterado com frequência após sua criação.
  • Não é convertido para uma classe.

Um exemplo comum de struct é o System.Drawing.Point que é composto por coordenadas X e Y, ambas do tipo inteiro.

Agora vejamos como declarar uma estrutura:

Listagem 1: Declarando uma estrutura em C#

struct Vetor
{
int X, Y, Z;
//constructor
public Vetor(int _x, int _y, int _z)
{
	X = _x;
	Y = _y;
	Z = _z;
}

public double Modulo
{
get{return Math.Sqrt(X*X + Y*Y + Z*Z);}
}

public override string ToString()
{
return String.Format(“X = {0}; Y = {1}; Z = {2}”, X, Y, Z);
}
}

Observamos que a declaração de uma estrutura é bastante semelhante a de uma classe e que esse tipo também possui métodos, como o constructor e propriedades. Para usar o struct visto, podemos fazer o seguinte:

Listagem 2: Usando uma estrutura em C#

Vetor v = new Vetor(1, 2, 3);
double modulo = v.Modulo;
string descrição = v.ToString();

Enums

Enumerations, ou apenas enums, são listas de valores fixos relacionados que servem para organizar a escolha de valores para uma determinada variável. Imaginemos uma classe Pessoa que possui um campo Estado_Civil. Ao usar essa classe sem seguir qualquer padrão, um programador desavisado pode passar vários valores diferentes para essa propriedade. Por exemplo, se for um string, pode-se passar “Casado”, “casado(a)”, “C” para indicar o mesmo valor, o que causa uma certa “bagunça” nas informações, dificultando o tratamento das mesmas futuramente.

Para evitar esse tipo de problema, podemos definir valores fixos para essa propriedade, por exemplo: Casado, Solteiro, Viuvo e Divorciado. Assim, só existem quatro valores válidos que podem ser passados. Criamos então um enum EstadoCivil:

Listagem 3: Declarando um enum em C#

enum EstadoCivil{Casado, Solteiro, Viuvo, Divorciado};

A partir de então, a propriedade da classe Pessoa não seria mais string, char ou int e sim do tipo EstadoCivil. Para associarmos um valor a essa propriedade, faríamos:

Listagem 4: usando uma propriedade do tipo enum

pessoa1.Estado_Civil = EstadoCivil.Casado;
pessoa2.Estado_Civil = EstadoCivil.Solteiro;
pessoa3.Estado_Civil = EstadoCivil.Viuvo;
pessoa4.Estado_Civil = EstadoCivil.Divorciado;

Os temas abordados nesse artigo estão presentes no capítulo 1, lição 1 do “Self paced training kit” da certificação 70-536.

Por enquanto é só, caso surjam dúvidas, sintam-se à vontade para perguntar e comentar. Um abraço a todos e até a próxima.

Joel Rodrigues

Joel Rodrigues - Técnico em Informática - IFRN Cursando Bacharelado em Ciências e Tecnologia - UFRN Programador .NET/C# e Delphi há quase 3 anos, já tendo trabalhado com Webservices, WPF, Windows Phone 7 e ASP.NET, possui ainda conhecimentos em HTML, CSS e Javascript (JQuery).