[duvida] get e set C#
Bom dia , gostaria de saber como eu faria para acessar por exemplo , estes dados usando este comando de get e set
public class Pessoa
{
private int _id { get; set; }
private string _nome { get; set; }
private string _email { get; set; }
private DateTime _dataNascimento { get; set; }
private char _sexo { get; set; }
}
public class Pessoa
{
private int _id { get; set; }
private string _nome { get; set; }
private string _email { get; set; }
private DateTime _dataNascimento { get; set; }
private char _sexo { get; set; }
}
Arlindo
Curtidas 0
Melhor post
Giordani Ramos
09/01/2012
Olá Aline!
O seu problema está nos limitadores de acesso aplicados à essas propriedades;
Você está fazendo:
Ao fazer isso, você está dizendo para a linguagem que o acesso à variável _id é controlado por ela própria. Como ela é private, somente a própria classe pode acessá-la.
Para resolver seu problema, bastaria colocar o limitador de acesso como public ou internal.
Em outra forma de escrever o comando, você poderia utilizar:
No exemplo acima, a variável privada _id somente poderá ser acessada pela propriedade ID, dessa forma, você pode incrementar o comando set, por exemplo, tratando que se o valor a ser atribuído for negativo, o _id recebe 0.
Ou ainda, pode permitir que apenas classes que herdam sua classe podem atribuir valores na variável _id, colocando um limitador específico para a atribuição:
Dessa forma, as outras classes só poderão ler o conteúdo da propriedade ID.
São muitas variações para o mesmo comando.
Se você estiver usando o visual studio, crie uma variável qualquer, como um private string _teste; e com o cursor sobre esta linha, faça um ctrl+R e ctrl+E... o VS fará o restante.
Esperto ter ajudado
Abraço
O seu problema está nos limitadores de acesso aplicados à essas propriedades;
Você está fazendo:
private int _id {get; set;}
Ao fazer isso, você está dizendo para a linguagem que o acesso à variável _id é controlado por ela própria. Como ela é private, somente a própria classe pode acessá-la.
Para resolver seu problema, bastaria colocar o limitador de acesso como public ou internal.
Em outra forma de escrever o comando, você poderia utilizar:
private int _id; public int ID { get { return _id; } set { _id = value; } }
No exemplo acima, a variável privada _id somente poderá ser acessada pela propriedade ID, dessa forma, você pode incrementar o comando set, por exemplo, tratando que se o valor a ser atribuído for negativo, o _id recebe 0.
set { if (value < 0) { _id = 0; } else { _id = value; } }
Ou ainda, pode permitir que apenas classes que herdam sua classe podem atribuir valores na variável _id, colocando um limitador específico para a atribuição:
protected set { _id = value; }
Dessa forma, as outras classes só poderão ler o conteúdo da propriedade ID.
São muitas variações para o mesmo comando.
Se você estiver usando o visual studio, crie uma variável qualquer, como um private string _teste; e com o cursor sobre esta linha, faça um ctrl+R e ctrl+E... o VS fará o restante.
Esperto ter ajudado
Abraço
GOSTEI 1
Mais Respostas
Fabio Rosa
22/12/2011
Bom dia!
Os métodos get e set estão implícitos nas operações de atribuição de valores para as propriedades, por exemplo:
- Quando você faz a seguinte atribuição:
Pessoa._nome = Fabio
, o C# internamente está usando o set.
- Quando você faz a seguinte atribuição
var nome = Pessoa._nome
, o C# internnamente está usando o get.
Não sei se seria esta a sua dúvida....?
Att.
Os métodos get e set estão implícitos nas operações de atribuição de valores para as propriedades, por exemplo:
- Quando você faz a seguinte atribuição:
Pessoa._nome = Fabio
, o C# internamente está usando o set.
- Quando você faz a seguinte atribuição
var nome = Pessoa._nome
, o C# internnamente está usando o get.
Não sei se seria esta a sua dúvida....?
Att.
GOSTEI 0
Arlindo
22/12/2011
Então eu não sei como acessar o
private string nome {get;set;}
Só sei fazer desta maneira :
private string nome ;
public void setnome(string nome)
{
this.nome=nome;
}
public string getnome()
{
return this.nome;
}
private string nome {get;set;}
Só sei fazer desta maneira :
private string nome ;
public void setnome(string nome)
{
this.nome=nome;
}
public string getnome()
{
return this.nome;
}
GOSTEI 0
Flavia Santos
22/12/2011
Aline,
Segue abaixo um exemplo de uma classe e como utilizá-la. Caso tenha ficado duvidas posta ai.
=> Criando a classe Pessoa
public class Pessoa
{
private String _Nome;
public String Nome
{
get {return _Nome ;}
set {_Nome = value ;}
}
}
Utilizando a classe Pessoa.
=> Instanciando a minha classe
Pessoa objPessoa = new Pessoa();
=> Atribuindo a propriedade Nome da classe Pessoa o valor de um textbox
txtNome.Text = objPessoa.Nome;
=> Atribuindo a um textbox a propriedade Nome da classe Pessoa
objPessoa.Nome = txtNome.Text;
Segue abaixo um exemplo de uma classe e como utilizá-la. Caso tenha ficado duvidas posta ai.
=> Criando a classe Pessoa
public class Pessoa
{
private String _Nome;
public String Nome
{
get {return _Nome ;}
set {_Nome = value ;}
}
}
Utilizando a classe Pessoa.
=> Instanciando a minha classe
Pessoa objPessoa = new Pessoa();
=> Atribuindo a propriedade Nome da classe Pessoa o valor de um textbox
txtNome.Text = objPessoa.Nome;
=> Atribuindo a um textbox a propriedade Nome da classe Pessoa
objPessoa.Nome = txtNome.Text;
GOSTEI 0
Flavia Santos
22/12/2011
Aline,
Desculpa a ultima explicação ficou confusa, o correto é:
=> Atribuindo a um textbox a propriedade Nome da Classe Pessoa
txtNome.Text = objPessoa.Nome;
=> Atribuindo a propriedade Nome da classe Pessoa o valor de um textbox;
objPessoa.Nome = txtNome.Text;
Desculpa a ultima explicação ficou confusa, o correto é:
=> Atribuindo a um textbox a propriedade Nome da Classe Pessoa
txtNome.Text = objPessoa.Nome;
=> Atribuindo a propriedade Nome da classe Pessoa o valor de um textbox;
objPessoa.Nome = txtNome.Text;
GOSTEI 0