none
Propriedades get{} set{} RRS feed

  • Pergunta

  • Como vim do Java, o exemplo abaixo eu consigo entender perfeitamente.

    public class Date
    {
        private int month = 7;  // Backing store
    
        public int Month
        {
            get
            {
                return month;
            }
            set
            {
                if ((value > 0) && (value < 13))
                {
                    month = value;
                }
            }
        }
    }

    Mas e essa outra sintaxe o que significa?

    public class Person
    {
        public int id { get; set; }
        public string name { get; set; }
    }

    Qual a diferença entre as duas?



    quinta-feira, 7 de janeiro de 2016 22:57

Respostas

  • Olá, Matheus!

    As de baixo são chamadas auto-implemented ou seja a de cima a entrada se reparar é controlada por um if essas são tratadas já a de baixo são implementadas como uma propriedade normal, sem qualquer controle, segue alguns links que vão te ajudar a entender melhor:

    https://msdn.microsoft.com/en-us/library/bb384054.aspx?f=255&MSPPError=-2147217396

    https://msdn.microsoft.com/en-US/library/k69wcs43.aspx

    http://stackoverflow.com/questions/5096926/what-is-the-get-set-syntax-in-c

    http://blog.codinghorror.com/properties-vs-public-variables/

    Espero ter ajudado!


    C#.NET / VB.NET
    Aulas de VB.NET

    Não se esqueça! Se uma resposta/post te foi útil, é generoso reconhece-lo clicando em votar e se uma resposta foi fundamental para o desenrolar dum problema marque como resposta, você ajuda(visitantes) e motiva(quem te respondeu)!

    sexta-feira, 8 de janeiro de 2016 01:15

Todas as Respostas

  • Olá, Matheus!

    As de baixo são chamadas auto-implemented ou seja a de cima a entrada se reparar é controlada por um if essas são tratadas já a de baixo são implementadas como uma propriedade normal, sem qualquer controle, segue alguns links que vão te ajudar a entender melhor:

    https://msdn.microsoft.com/en-us/library/bb384054.aspx?f=255&MSPPError=-2147217396

    https://msdn.microsoft.com/en-US/library/k69wcs43.aspx

    http://stackoverflow.com/questions/5096926/what-is-the-get-set-syntax-in-c

    http://blog.codinghorror.com/properties-vs-public-variables/

    Espero ter ajudado!


    C#.NET / VB.NET
    Aulas de VB.NET

    Não se esqueça! Se uma resposta/post te foi útil, é generoso reconhece-lo clicando em votar e se uma resposta foi fundamental para o desenrolar dum problema marque como resposta, você ajuda(visitantes) e motiva(quem te respondeu)!

    sexta-feira, 8 de janeiro de 2016 01:15
  • Matheus boa noite,

    Acredito que a resposta do André tenha sido bem clara, só complementando tome cuidado em executar operações dessa forma - validando dados em um set, por exemplo - por que nesse caso quem está settando sua classe não recebera nenhum informativo que o valor não foi preenchido e isso poderá gerar uma certa dor-de-cabeça em uma uso posterior por exemplo, principalmente se você não disponibilizar o fonte.

    Não sei se 'chovi no molhado' mas acredito que a dica seja valida.

    Att.


    Guilherme Silva Cardoso

    sexta-feira, 8 de janeiro de 2016 01:26
  • Matheus boa noite,

    Acredito que a resposta do André tenha sido bem clara, só complementando tome cuidado em executar operações dessa forma - validando dados em um set, por exemplo - por que nesse caso quem está settando sua classe não recebera nenhum informativo que o valor não foi preenchido e isso poderá gerar uma certa dor-de-cabeça em uma uso posterior por exemplo, principalmente se você não disponibilizar o fonte.

    Não sei se 'chovi no molhado' mas acredito que a dica seja valida.

    Att.


    Guilherme Silva Cardoso


    Com certeza Guilherme, isso foi apenas um exemplo, copiado inclusive dos tutoriais da MSDN. Se caso o set receber algum tratamento como esse então no mínimo deveria levantar uma exceção para que quem estiver consumindo a classe faça os devidos tratamentos.
    sexta-feira, 8 de janeiro de 2016 12:18
  • Olá, Matheus!

    As de baixo são chamadas auto-implemented ou seja a de cima a entrada se reparar é controlada por um if essas são tratadas já a de baixo são implementadas como uma propriedade normal, sem qualquer controle, segue alguns links que vão te ajudar a entender melhor:

    https://msdn.microsoft.com/en-us/library/bb384054.aspx?f=255&MSPPError=-2147217396

    https://msdn.microsoft.com/en-US/library/k69wcs43.aspx

    http://stackoverflow.com/questions/5096926/what-is-the-get-set-syntax-in-c

    http://blog.codinghorror.com/properties-vs-public-variables/

    Espero ter ajudado!


    C#.NET / VB.NET
    Aulas de VB.NET

    Não se esqueça! Se uma resposta/post te foi útil, é generoso reconhece-lo clicando em votar e se uma resposta foi fundamental para o desenrolar dum problema marque como resposta, você ajuda(visitantes) e motiva(quem te respondeu)!


    Entendi, é um get e set sem qualquer tratamento. Mas por trás dos panos como fica a estrutura? As variáveis privadas e os métodos get e set públicos?
    sexta-feira, 8 de janeiro de 2016 12:21