• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

wrproject

[C#] Exemplo de eventos e delegates

1 mensagem neste tópico

using System;

//class para fazer contas
class conta
{
    int choice;
    int num1, num2;//numeros que irão ser efectuadas operações
    int r = 0;//resultado
       
    //delegate do evento
    //ou seja a assinatura comum dos eventos
    //neste caso este delegate será válido para eventos que tenham
    //tipo de retorno void e dois parametros do tipo object e EventArgs
    
    public delegate void EventHandler(object sender,argumentos ev);

    public event EventHandler MyEvent;


    public conta()
    {

        choice = 0;
        num1 = 0;
        num2 = 0;
        r = 0;
    }

    //fim constructor


    public void start()
    {


        Console.WriteLine("Seleccione a operação desejada:");
        Console.WriteLine("1-somar");
        Console.WriteLine("2-subtrair");
        Console.WriteLine("3-multiplicar");


        //tratamento de excepções
        try
        {

            choice = int.Parse(Console.ReadLine());
        }
        catch (Exception)
        {
            Console.WriteLine("Ocorreu um erro inesperado e o programa irá terminar");
        }




        try
        {

            Console.WriteLine("Introduza o primeiro número");
            num1 = int.Parse(Console.ReadLine());
            Console.WriteLine("Introduza o segundo número");
            num2 = int.Parse(Console.ReadLine());

        }
        catch (Exception)
        {

            Console.WriteLine("Ocorreu um erro inesperado e o programa irá terminar");

        }
        //fim tratamento excepções


        //definir a escolha
        switch (choice)
        {
            case 1:
                r = num1 + num2;
                MyEvent(this, new argumentos(choice));
                break;
            case 2:
                r = num1 - num2;
                MyEvent(this, new argumentos(choice));
                break;
            case 3:
                r = num1 * num2;
                MyEvent(this, new argumentos(choice));
                break;


        }
        //fim definição de escolha


        Console.WriteLine("O resultado é {0}", r);
    }



}



//classe dos argumentos
class argumentos : EventArgs
{

    int choice = 0;

    public argumentos(int v)
    {
        choice = v;
    }


    public int Choice
    {

        get { return choice; }
    }


}








class prog
{




    public static void Main()
    {
        conta obj = new conta();
        obj.MyEvent += new conta.EventHandler(OnCalculo);
        obj.start();
        
        Console.ReadLine();

    }



    //inicio dos eventos


    //evento se ocorrer algum cálculo
    public static void OnCalculo(object sender, argumentos ev)
    {
        string calculo = "";

        switch(ev.Choice)
        {
            case 1:
                calculo = "somar";
                break;
            case 2:
                calculo = "subtrair";
                break;
            case 3:
                calculo = "multiplicar";
                break;

        }

        Console.WriteLine("Efectuado conta de {0}",calculo);

    }



    

    //fim dos eventos

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora