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

Dkid

Como usar o GetEnumerator ?

7 mensagens neste tópico

Boas pessoal, tou a tentar à algum tempo arranjar solucao para o meu problema, mas não consigo ...

        public IEnumerator GetEnumerator()
        {int var = 0;
            // Esta zona está ligada com a Listview do Adicionar
            // E com a classe BaseDados, Capacidade
            
            //Clientes          
            Cliente[] clientes = new Cliente[bd.CapacidadeCliente];
            foreach (object[] cliente in bd)
                clientes[var++] = new Cliente(cliente[0].ToString(), cliente[1].ToString(), cliente[2].ToString(), cliente[3].ToString(), cliente[4].ToString(), cliente[5].ToString());
            return new Enumerador (clientes);

            //Funcionarios
            Funcionario[] funcionarios = new Funcionario[bd.CapacidadeFuncionario];
            foreach (object[] funcionario in bd)
                funcionarios[var++] = new Funcionario(funcionario[0].ToString(), funcionario[1].ToString(), funcionario[2].ToString(), funcionario[3].ToString(),
                                      funcionario[4].ToString(), funcionario[5].ToString(),funcionario[6].ToString());
            return new Enumerador(funcionarios);
            }

Funcionamento : Quando uso o cliente funciona na perfeição, faz o que quero

Problema : Se quero usar o funcionario ele não "chega" a ler o codigo do funcionario porque o cliente está primeiro, e não sei como resolver esta situacao para que seja lido e aí conseguir o que pretendo..

Não sei se me fiz entender...

Obrigado pela atenção

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nunca vai chegar ao funcionário porque antes apanha o return do cliente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes dividir esse metodo em 2. Um para os funcionarios e outro para os clientes.

Ou pode passar um argumento para o metodo e testar se queres retornar os funcionarios ou os clientes.

Uma dica. Nem sempre o uso do foreach é aconcelhavel em .NET, pois perdes performance.

Podes ler este artigo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hum, e como divido o metodo em 2 ?

Podes-me dizer ou mostrar algum exemplo ??

Baderous eu sei que assim como está nunca irá ao funcionário, o que procuro é uma solução para la chegar

Obrigado pelas respostas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crias 2 metodos

public IEnumerator GetClientEnumerator()
        {int var = 0;
            // Esta zona está ligada com a Listview do Adicionar
            // E com a classe BaseDados, Capacidade

            //Clientes          
            Cliente[] clientes = new Cliente[bd.CapacidadeCliente];
            foreach (object[] cliente in bd)
                clientes[var++] = new Cliente(cliente[0].ToString(), cliente[1].ToString(), cliente[2].ToString(), cliente[3].ToString(), cliente[4].ToString(), cliente[5].ToString());
            return new Enumerador (clientes);
}

public IEnumerator GetFuncionariosEnumerator()
        {int var = 0;
            // Esta zona está ligada com a Listview do Adicionar
            // E com a classe BaseDados, Capacidade

            //Funcionarios
            Funcionario[] funcionarios = new Funcionario[bd.CapacidadeFuncionario];
            foreach (object[] funcionario in bd)
                funcionarios[var++] = new Funcionario(funcionario[0].ToString(), funcionario[1].ToString(), funcionario[2].ToString(), funcionario[3].ToString(),
                                      funcionario[4].ToString(), funcionario[5].ToString(),funcionario[6].ToString());
            return new Enumerador(funcionarios);
            }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim desta maneira vai-me dizer que lhe falta o GetEnumerator()...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim. onde tinhas GetEnumerator tens que alterar para a(s) chamada(s) aos metodos que criaste.

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