Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Queria confirma se os dois códigos são esquivantes

Então acredito que é somente uma forma reduzida de escrever o código que não precisa de uma lógica interna, alem da forma que está o seu encasulamento para acesso-lo e modificar a informação da propriedade da class em questão.

Alguém poderia me confirma se é só isso mesmo?

public int Numero { private get; set; }
public int Numero {
    private get {
        return this.Numero;
    }
    set {
        this.Numero = value;
    }
}
2 respostas
solução!

Olá, José. Tudo bom?

Quase isso!

Em seu código, note que há uma referência cíclica da propriedade Numero para si mesmo:

public int Numero {
    private get {
        return this.Numero;
    }
    set {
        this.Numero = value;
    }
}

O correto seria criar um campo privado e o utilizar:

private int _numero;
public int Numero {
    private get {
        return this._numero;
    }
    set {
        this._numero= value;
    }
}

O código acima é equivalente ao código:

public int Numero { get; set; }

Criando com get e set desta forma, por mais que no momento o get/set não tenham nenhum código específico, temos a segurança de que no futuro poderemos alterar a lógica destes atributos sem nos preocupar em alterar outras classes que dependem destes atributos. Por exemplo:

public int Numero
{
    get
    {
        /* recupera de um arquivo */
    }
    set
    {
        /* salva em um arquivo */
    }
 }

Usando campos públicos public int numero; não teremos espaço para este tipo de alteração. Seria necessário criar um método com esta lógica e alterar todas as classes que alteram este campo público.

O que você acha? Esclareci sua dúvida?

Abs e bons estudos.

Obrigado professor/Instrutor Guilherme entendi agora, isso que o senhor me apresentou e como se fosse assim:

(Sintaxe que parece mais com java)

E sobre o uso do this é costume meu de usa-lo, como senhor disse na aula.

private int _numero;
 public void SetNumero(int numero) {
    _numero = numero;
 }
 public int GetNumero() {
    return _numero;
 }