Constructor method for calculating age

Asked

Viewed 622 times

0

I am making a very simple client registration application I would like to know how to program a method that calculates and returns the age (in years) from the attribute Anonascimento. I know how to do, for example, a "public Static int Calculaidade(Datetime x)", but to make a constructor method to calculate age from the year of birth really did not understand.

Below I put a screen print and the part of the code that is interesting to analyze:

inserir a descrição da imagem aqui

    List<Pessoa> listcadastro = new List<Pessoa>();

    public class Pessoa
    {
        private string nome;
        private string endereço;
        private string ano_nascimento;
        private string telefone;

        public string Nome
        {
            get
            {
                return nome;
            }

            private set
            {
                nome = value;
            }
        }

        public string Endereço
        {
            get
            {
                return endereço;
            }

            private set
            {
                endereço = value;
            }
        }

        public string Ano_nascimento
        {
            get
            {
                return ano_nascimento;
            }

            private set
            {
                ano_nascimento = value;
            }
        }

        public string Telefone
        {
            get
            {
                return telefone;
            }

            private set
            {
                telefone = value;
            }
        }

        public Pessoa(string nome, string endereço, string ano_nascimento, string telefone)
        {
            this.nome = nome;

            this.endereço = endereço;

            this.ano_nascimento = ano_nascimento;

            this.telefone = telefone;

        }
    }


private void bt_salvar_Click(object sender, EventArgs e)
{

    listcadastro.Add(new Pessoa(txt_ano.Text, txt_nome.Text, txt_endereco.Text, txt_telefone.Text));

    dataGridView1.DataSource = null;
    dataGridView1.DataSource = listcadastro;
}

private void novoMenuItem_Click_1(object sender, EventArgs e)
{
    txt_nome.Enabled = true;
    txt_ano.Enabled = true;
    txt_endereco.Enabled = true;
    txt_telefone.Enabled = true;

    if (bt_pjuridica.Checked)
    {
        txt_registro.Enabled = true;
        txt_registro.Mask = "00,000,000/0000-00";
    }

    if (bt_pfisica.Checked)
    {
        txt_registro.Enabled = true;
        txt_registro.Mask = "000,000,000-00";
    }
}

2 answers

1

You have done several methods (as you did before) to return and set the values in the properties, but there is no need to use so you can write the properties this way:

public string nome { get; set; }
//ou um set privado
public string idade { get; private set; }

is easier to understand. And returning age in years would look like this:

public static int calcularIdade(DateTime x)
{
  TimeSpan idade = DateTime.Now - x;
  //divide a quantidade de dias por 365.25(por causa dos anos bissextos) e da um cast pra int, não tem erro
  int anos = (int)(idade.Days / 365.25)
  return anos;
}

0


In reality the constructor will not calculate age unless you have an Age property and the constructor assigns the value to that property.

    public class Pessoa
    {
        private string nome;
        private string endereço;
        private int ano_nascimento;
        private string telefone;
        private int idade;

        public string Nome
        {
            get
            {
                return nome;
            }

            private set
            {
                nome = value;
            }
        }

        public string Endereço
        {
            get
            {
                return endereço;
            }

            private set
            {
                endereço = value;
            }
        }

        public int Ano_nascimento
        {
            get
            {
                return ano_nascimento;
            }

            private set
            {
                ano_nascimento = value;
            }
        }

        public int Idade
        {
            get
            {
                return idade;
            }

            private set
            {
                idade = value;
            }
        }

        public string Telefone
        {
            get
            {
                return telefone;
            }

            private set
            {
                telefone = value;
            }
        }

        public Pessoa(string nome, string endereço, int ano_nascimento, string telefone)
        {
            this.nome = nome;

            this.endereço = endereço;

            this.ano_nascimento = ano_nascimento;

            this.telefone = telefone;

            this.idade = DateTime.Now.Year - ano_nascimento;

        }
    }

Your save button will have a quick change

private void bt_salvar_Click(object sender, EventArgs e)
{

    listcadastro.Add(new Pessoa(int.Parse(txt_ano.Text), txt_nome.Text, txt_endereco.Text, txt_telefone.Text));

    dataGridView1.DataSource = null;
    dataGridView1.DataSource = listcadastro;
}
  • Thank you very much!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.