[duvida] get e set C#
22/12/2011
0
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
Post mais votado
09/01/2012
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
Giordani Ramos
Mais Posts
22/12/2011
Fabio Rosa
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.
22/12/2011
Arlindo
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;
}
23/12/2011
Flavia Santos
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;
23/12/2011
Flavia Santos
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;
Clique aqui para fazer login e interagir na Comunidade :)