none
Recebendo arraylist por herança em c# RRS feed

  • Pergunta

  • Amigos, eu preciso receber um arraylist por herança em outra classe. Faço debug na classe principal e existem valores nas variáveis mas não estou conseguindo passar esse arraylist para outra classe. Veja o código por favor. Obrigado!

    using

    System;


    using

    System.Collections.Generic;


    using

    System.Linq;


    using

    System.Text;


    using

    System.Collections;



    namespace

    Projeto

    {

       

    classCImpressao: Ccadastro


        {

           

    protectedArrayListdadosImpressao;

           

           

    publicCImpressao(ArrayListdadosC)

            {

    dadosImpressao =

    newArrayList();

                dadosAB = dadosC;

           

     

            }

           

    publicvoidimprime()

            {

               

           

               

            }

        }

    }


    terça-feira, 25 de novembro de 2014 21:27

Todas as Respostas

  • Olá Marcos,

    Segue um exemplo, vê se te ajuda.

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication2
    {
        public class Program
        {
            static void Main(string[] args)
            {
                Pessoa person = new Pessoa();
            }
        }
    
        public class MinhaClasse
        {
            ArrayList array = null;
    
            public MinhaClasse(ArrayList array)
            {
                this.array = array;
            }
    
            public void Imprimir()
            {
                Console.WriteLine(this.array.Count);
            }
        }
    
        public class Pessoa
        {
            public Pessoa()
            {
                ArrayList array = new ArrayList();
                array.Insert(0, 1);
                array.Insert(0, 2);
                array.Insert(0, 3);
                array.Insert(0, 4);
    
                MinhaClasse myClass = new MinhaClasse(array);
                myClass.Imprimir();
            }
        }


    Klayton Gomes MCP /MCTS/ MCAD / MCPD / MCSD Software Architecture / System Analyst

    quarta-feira, 26 de novembro de 2014 00:48
  • Obrigado Klayton, mas veja que eu estou passando por herança, por isso os atributos são protegidos. Veja uma cópia do código mais completo.

    using

    System;


    using

    System.Collections.Generic;


    using

    System.Linq;


    using

    System.Text;


    using

    System.Collections;



    namespace

    Projeto

    {

       

    classCcadastro


        {

           

    protectedArrayListdadosAB;

           

           

           

    publicCcadastro()

            {

                dadosAB =

    newArrayList();           

            }

           

    publicvoidadiciona(ArrayListdadosB)

            {           

    dadosAB = dadosB;

            }

        }

    }

    Classe que deveria receber os valores...obs não está chegando aqui!

    using

    System;


    using

    System.Collections.Generic;


    using

    System.Linq;


    using

    System.Text;


    using

    System.Collections;



    namespace

    Projeto

    {

       

    classCImpressao: Ccadastro


        {

           

    publicCImpressao()

            {

            }

           

           

    publicCImpressao(ArrayListdadosimpressao)

            {

                dadosAB = dadosimpressao;

     

            }

           

    publicArrayListimprime()

            {

               

               

    returndadosAB;

            }

        }

    }


    quarta-feira, 26 de novembro de 2014 15:37
  • Olá Marcos,

    Não entendi bem o que você esta querendo e nem como você esta chamado seu objeto, mas acho que você quer "Roubar" os valores de uma propriedade privada de uma classe.

    Veja, em uma herança, a classe não herda seus valores, e sim seus atributos. Para o filho herdar os valores, os mesmo tem que ser valores constantes dentro da classe, você tem que dizer qual o valor da propriedade.

    Segue o link que explica melhor o conceito de herança: MSDN - Herança

    Bom para voce poder pegar os valores da sua propriedade Ccadastro.dadosa, você terá que tornar publica a mesma, ou criar um método que retorne seus valres. EX:

    namespace Projeto
    {
    
        class Ccadastro
        {
            public ArrayList DadosAB { get; set; }
    
            public Ccadastro() { DadosAB = new ArrayList(); }
            public void adiciona(ArrayList dadosB)
            {
                DadosAB = dadosB;
            }
        }
    
        class CImpressao : Ccadastro
        {
            public CImpressao() { }
            
            public CImpressao(ArrayList dadosimpressao)
            {
                DadosAB = dadosimpressao;
            }
    
            public ArrayList imprime()
            {
                return DadosAB;
            }
        }
    }
    
     public class Program
        {
            static void Main(string[] args)
            {
                ArrayList array = new ArrayList();
                array.Insert(0, 1);
                array.Insert(0, 2);
                array.Insert(0, 3);
                array.Insert(0, 4);
    
                Projeto.Ccadastro CC = new Projeto.Ccadastro();
                CC.adiciona(array);
                Console.WriteLine(CC);
    
                foreach (var item in CC.DadosAB)
                {
                    Console.WriteLine(item);
                }
                
                Projeto.CImpressao CI = new Projeto.CImpressao();
                CI.adiciona(CC.DadosAB);
                
                foreach (var item in CI.imprime())
                {
                    Console.WriteLine(item);
                }
            }
        }
    }

    Mas se for fazer desta maneria, sugiro usar o método que o Klayton Gomes mostrou.

    ********************************************************

    Sempre lembre de marcar a resposta se ela foi útil.

    • Sugerido como Resposta Demetrius Quadros quinta-feira, 11 de dezembro de 2014 13:37
    quarta-feira, 26 de novembro de 2014 18:53