How to manipulate properties of instances of a class that is in a ListT?

3

I have a class called Pessoa , this class has two properties Nome and Idade , I'm using List<T> to manipulate data, I know I can manipulate data of type string or int creating a List<string> listStr or a List<int> listInt . And if I want to insert a new value of the data type corresponding to the created list, just use the Add() method. For example:

listStr.Add("Minha Lista 1");

And also for type int :

listInt.Add(50);

However, I do not know how to access and insert values in the Nome and Idade properties in instances of my Pessoa class that are in a List<Pessoa> , I tried to use the ListPessoa.Add() method, but it seems to accept only objects of type Pessoa . Here is an example of the problem:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ListaObjeto
{
    class Pessoa 
    {
        private String nome;
        private int idade;

        public Pessoa()
        {
            this.nome = String.Empty;
            this.idade = 0;
        }

        public Pessoa(string nome, int idade)
        {
            this.nome = nome;
            this.idade = idade;
        }

        public string Nome
        {
            get { return this.nome; }
            set { this.nome = value; }
        }

        public int Idade
        {
            get { return this.idade; }
            set { this.idade = value; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<Pessoa> ListaPessoa = new List<Pessoa>();
            // Como acessar as propriedades Nome e Idade das instância de Pessoa que estão na ListaPessoa?            
        }
    }
}
    
asked by anonymous 21.11.2015 / 03:31

2 answers

2

You need to create an instance of Pessoa and pass it to the Add method of your List<Pessoa> .

See in this example how I perform some operations with your List<Pessoa> .

class Program
{
    static void Main(string[] args)
    {
        List<Pessoa> ListaPessoa = new List<Pessoa>();

        // Adicionando algumas pessoas para serem manipuladas no exemplo

        ListaPessoa.Add(new Pessoa
        {
            Nome = "Pessoa 1",
            Idade = 18
        });

        ListaPessoa.Add(new Pessoa
        {
            Nome = "Pessoa 2",
            Idade = 25
        });

        ListaPessoa.Add(new Pessoa
        {
            Nome = "Pessoa 3",
            Idade = 31
        });

        // Acessando e alterando os valores de uma pessoa que já está na lista

        // Obtém a instância da "Pessoa 2", note que estou acessando as instâncias da lista da mesma maneira que faço com um array
        var pessoa = ListaPessoa[1];

        Console.WriteLine($"Nome: {pessoa.Nome}, Idade: {pessoa.Idade}");
        // Saída: Nome: Pessoa Pessoa 2, Idade: 25

        // Alterando valores da pessoa obtida
        pessoa.Nome = "Pessoa X";
        pessoa.Idade = 99;

        Console.WriteLine($"Nome: {pessoa.Nome}, Idade: {pessoa.Idade}");
        // Saída: Nome: Pessoa X, Idade: 99
    }
}

Click here to view this same sample running in .NET Fiddle

    
21.11.2015 / 03:49
2

You have to create a new object of this class and add it to the list:

listaPessoa.Add(new Pessoa("João", 18));

See running on dotNetFiddle . I upgraded the code.

    
21.11.2015 / 03:43