Category Archives: C#

C# – Apresenta – Fundamentos – Básico

C#, básico!

Web App Saga

A missão é fazer um estudo tratando dos detalhes fundamentais que preciso conhecer para escrever códigos C#. Ou seja, o foco será apenas em assuntos básico dessa linguagem desenhada especialmente para .NET. Os seus elementos principais, explicando como eles funcionam dentro da plataforma.etc…

Inicialmente, concentrarei apenas em assuntos utilizados no dia-a-dia do desenvolvimento como: sintaxe, tipos, declaração de vars, classes, estruturas, mascaramento de tipos, passagem de parâmetros, etc…

Ao final da missão, deverei ter domínio sob a estrutura básica de um aplicação-C# sendo capaz de organizar boas aplicações utilizando esses recursos.Além do mais, estes assuntos são o mínimo que eu devo saber para que eu possa desenvolver algo.

Bem, vamos então parar de “blá-blá-blá” e vamos desenvolver.

Enfim, vamos fazer um overview de recursos básicos como:

  • Hello world
  • etc…

“Praticamente todo o desenvolvimento feito na Microsoft é feito em C#. Isso quer dizer que as novidades aparecem antes em C# e que os exemplos e documentações são feitos inicialmente em C# e depois traduzidos para VB. O VB é o primo pobre!!!!”

Next stop C#. Disambarke on the left.

#09 – C# – Keyword – Virtual

Palavra-Chave: Virtual (Modificação)

Modo Mobile

Entenda um pouco sobre conceitos e utilização da palavra-chave virtual. Vamos lá:

Esta palavra-chave ou modificador virtual é aplicado para modificar uma declaração de método, propriedade, indexador ou evento e permitir que ela seja substituída em uma classe derivada (utilizando o override).

Declaração

Declaração simples:

public virtual double Area()   
{  
    return x * y;  
}

Agora temos um método que pode ser substituído por qualquer classe que o herde.

Exemplo simples

class ClasseBase
    {
        public virtual void Mensagem()
        {
            Console.WriteLine("Call Class Base");
        }
    }

    class ClasseDerivada : ClasseBase
    {
        public override void Mensagem()
        {
            Console.WriteLine("Call Class Derivada");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ClasseBase objBase = new ClasseBase();
            objBase.Mensagem();

            ClasseBase objDerivada = new ClasseDerivada();
            objDerivada.Mensagem();

            Console.Read();
        }
    }

Uma classe base que contém um método virtual Mensagem().

Uma classe derivada que herda da ClasseBase e substitui o método Mensagem().

cs_modificador_virtual

Durante a invocação do método virtual, o tipo de tempo de execução da instância para a qual essa chamada ocorrer irá determinar a implementação do método real a ser chamado. Então, quando Mensagem() for invocado:

  • Na primeira vez, o tipo de tempo de compilação é ClasseBase e o tipo de tempo de execução também é ClasseBase.
  • Na segunda vez, o tipo de tempo de compilação é ClasseBase e tipo de tempo de execução será ClasseDerivada.

Late Binding

Em resumo, o virtual irá receber uma ligação tardia. Decidindo qual implementação do método será aplicada em tempo de execução baseado no tipo do objeto apontado.

Métodos abstratos

Os métodos virtuais atuam de forma semelhante aos métodos abstratos nas classes base, exceto que a implementação nas classes derivadas será opcional.

Observações

Veja alguns pontos importantes:

Por padrão, um método NÃO É virtual e não podemos modificar um método não virtual.

Não é possível aplicar o virtual com os modificadores static, abstract, private ou override.

Ok! Um pouco sobre o Métodos Virtuais.