Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 411369
            [titulo] => [duvida] get e set C# 
            [dataCadastro] => DateTime Object
                (
                    [date] => 2012-01-09 22:15:57
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 289814
            [status] => A
            [isExample] => 
            [NomeUsuario] => Giordani da Silva Ramos
            [Apelido] => Giordani Ramos
            [Foto] => IMG00126.jpg
            [Conteudo] => Olá Aline!

O seu problema está nos limitadores de acesso aplicados à essas propriedades;
Você está fazendo:

[code]private int _id {get; set;} [/code]

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:

[code]
private int _id;
public int ID
{
get { return _id; }
set { _id = value; }
}
[/code]

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.

[code] set { if (value < 0) { _id = 0; } else { _id = value; } } [/code]

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:

[code] protected set { _id = value; } [/code]

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 ) )

[duvida] get e set C#

Arlindo
   - 22 dez 2011

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; }
}

Post mais votado

Giordani Ramos
   - 09 jan 2012

Olá Aline!

O seu problema está nos limitadores de acesso aplicados à essas propriedades;
Você está fazendo:

#Códigoprivate 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:

#Código
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.

#Código 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:

#Código 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

Fabio Rosa
   - 22 dez 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.

Arlindo
   - 22 dez 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;
}

Flavix
|
MVP
Pontos: 25
    23 dez 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;

Flavix
|
MVP
Pontos: 25
    23 dez 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;