Arquivo da categoria: Estrutura da Linguagem

Conceitos Finais e Exemplo Prático – Structs: Estrutura da Linguagem – Parte 2

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 struct 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 struct 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 struct não podemos inicializar campos de instância em seu ponto de declaração, o que é possível nas classes. Qualquer struct tem como regra inicializar todos os seus campos em todos os seus construtores;
  • A struct 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 struct 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 struct devem ser inicializados de forma explícita, já que o compilador por si só não inicializará um campo no construtor.

Chega de conceitos e vamos à prática. Veja na Listagem 01 um exemplo do uso da Struct com datas, representando os campos dia, mês e ano:

Continuar lendo

Conceitos e Sintaxe – Structs: Estrutura da Linguagem – Parte 1

Olá pessoal, neste artigo veremos os principais conceitos das Structs. Acompanhem:

A carga para gerenciar o heap (pilha, local especial da memória) pode tornar-se desproporcional em situações nas quais uma classe possui uma quantidade muito pequena de dados. Se assim for, é aconselhável definir o tipo como estrutura ao invés de classe. Desta forma, a carga de gerenciamento de memória é reduzida frequentemente, já que as estruturas são armazenadas na pilha.

Dito isto, podemos afirmar que Structs é uma estrutura de um determinado tipo. No C#, os tipos numéricos primitivos float, long e int são apelidos de estruturas. O long, por exemplo, é um apelido para System.Int64.

Segundo a documentação do Visual Studio 2010, “é um tipo por valor que é normalmente usado para encapsular pequenos grupos de variáveis relacionadas, como características de uma pessoa, por exemplo.” (tradução livre). Ainda segundo a documentação, Structs podem conter construtores, constantes, campos, métodos, propriedades, indexadores, operadores, eventos e tipos aninhados.

É importante dizer que o uso de diversos operadores comuns em nossos próprios tipos de estrutura, por padrão, não é possível.

Continuar lendo

Conceitos e Exemplo Prático: Extensions Methods

Olá pessoal, neste artigo veremos os conceitos e exemplos práticos com os Extensions Methods. Acompanhem:  

Introdução – Os Extensions Methods (Métodos de Extensão), como o próprio nome diz, seriam uma extensão de uma determinada classe, em forma de método. Um exemplo disso seria um método que “estende” a classe String, um método personalizado que pega todas as letras E de uma palavra e faz determinada ação, ou mesmo um método que estende a classe Int32 ou a Decimal, pegando seus valores e os formatando como valores monetários, enfim temos vários exemplos.

Inicialmente comente o namespace System.Linq e instancie um objeto da classe ArrayList. Note que temos diversos métodos em sua classe, como mostra a Figura 01:

Figura 01 – Classe ArrayList sem Extensions Methods

 Agora descomente o System.Linq e chame novamente os métodos, veja na Figura 02:

Continuar lendo

Conceitos dos Generics e seus Tipos – Delegates, Events e Generics: Estrutura da Linguagem – Parte 3

Olá pessoal, neste artigo veremos os conceitos dos Generics e seus Tipos. Acompanhem:

 Introdução – Generic é uma maneira de criar parâmetros para classes e definir tipos que podem ser substituídos em vários lugares do programa. Isso elimina o uso da classe Object para definirmos tipos que podem variar no decorrer do programa.

Por exemplo, vamos imaginar uma classe com um método que possa receber uma string, int ou decimal como parâmetro. A única maneira de criar uma única função deste tipo seria criar uma que recebesse um Object, já que o Object pode ser de qualquer tipo. Na hora de recuperarmos o valor, o programa deveria fazer uma conversão correta em tempo de execução (operação chamada Cast) e, caso o tipo contido no retorno da função não fosse o correto, certamente teríamos um erro. Veja o exemplo a seguir:

Continuar lendo

Conceitos e Exemplos com os Eventos – Delegates, Events e Generics: Estrutura da Linguagem – Parte 2

Olá pessoal, neste artigo veremos os conceitos e exemplos dos Eventos da linguagem C#. Acompanhem:

 Introdução – Evento é uma mensagem que uma classe dispara em uma situação determinada. Como visto no artigo anterior, os eventos usam delegates para armazenar endereços de métodos.

Confira alguns exemplos práticos de uso com eventos:

  • Aplicação Web – Comunica ao aplicativo que algum acesso foi feito em uma aplicação;
  • Timer – Comunica a outros objetos sobre a expiração de um período de tempo;
  • Botão – Comunica a um objeto de formulário que alguém clicou no botão;
  • Domínio de Aplicação – Comunica a uma aplicação a respeito de um evento não-controlado.

Continuar lendo

Conceitos do Delegate e Métodos Anônimos – Delegates, Events e Generics: Estrutura da Linguagem – Parte 1

Olá pessoal, neste artigo veremos os conceitos e exemplos do Delegate e como invoca-lo. Veremos também os Métodos Anônimos da linguagem C#. Acompanhem:

 Introdução – O Delegate é um tipo de variável que guarda o endereço de um método. A principal utilidade dele é centrada no uso dos eventos. Em um determinado evento, uma classe dispara uma mensagem que será executada por um método em tempo de execução. O Delegate entra com a responsabilidade de guardar o endereço de memória onde se encontra este método.

As classes do Delegate oferecem uma interface pública que permite inicializar, adicionar, remover e invocar delegates.

Continuar lendo

Exemplos com Propriedades e Indexadores – Garbage Collector, Propriedades e Indexadores: Estrutura da Linguagem – Parte 3

Não me esqueci do site que disse que iria inaugurar pessoal! É que to na correria da faculdade com muitos trabalhos pra fazer, sem tempo pra fazer artigos, mais a partir de Julho será inaugurado e postado a novidade aqui no blog, fiquem de olho!

Olá pessoal, neste artigo veremos na terceira e última parte alguns exemplos com as Propriedades, descritas no artigo anterior, e veremos também os Indexadores. Acompanhem:

Voltando de onde paramos, veja o exemplo a seguir, que contém a propriedade que define um valor chamado PrecoDeVenda, que não pode ser negativo. Perceba que temos um campo privado, que internamente, irá armazenar o valor da propriedade em questão:

Continuar lendo