C# - Propriedades Auto-Implementadas


A partir do C # 3.0, foi implementada o recurso das propriedades auto-implementadas.

Através das propriedades auto-implementadas podemos fazer a declaração das propriedades de uma classe de uma maneira mais concisa quando nenhuma lógica adicional é necessária nos assessores (get e set) das propriedades.

Vamos comparar como era antes e como ficou a declaração das propriedades usando o recurso das propriedades auto-implementadas:

private int _idade;

public int Idade
{
     get { return _idade; }
     set { _idade = value; }
}
   public int Idade
   {
         get; set;
   }
 ANTES DA VERSÃO 3.0 COM PROPRIEDADES AUTO-IMPLEMENTADAS

Obs: Nos métodos de acesso às propriedades temos os famosos get/set, onde o acessor get é responsável por retornar um valor de um campo privado da classe e o acessor set é responsável por atribuir um novo valor ao campo.

Ao utilizar a sintaxe das propriedades auto-implementadas o compilador C# gera automaticamente os campos privados.

Utilizando este recurso temos uma redução na quantidade de código necessária para implementarmos as propriedades das nossas classes e o código fica mais claro e legível.

Abaixo temos um exemplo mais completo onde usamos o recurso das propriedades auto-implementas.

using System;

namespace PropriedadesAutoImplementadas
{
    class Program
    {
           public class Cliente
        {
            //propriedade ID - somente leitura
            public int ID { get; private set; }
            public string Nome { get; set; }
            public string Email { get; set; }

            public Cliente(int id){
                ID = id;
            }

            public override string ToString(){
                return ID + "\t" + Nome + "\t" + Email;
            }
        }

        static void Main(string[] args){

   
 //criando um novo objeto cliente com´ID = 1             Cliente p = new Cliente(1);

          
 //Modificando uma propriedade
            p.Nome = "Jose Carlos Macoratti";
            p.Email = "macoratti@yahoo.com";

            Console.WriteLine(p);
            Console.ReadLine();
       }
    }
}
Neste exemplo definimos a propriedade ID como sendo somente leitura
atribuindo o modificador private ao acessor set:
public int ID { get; private set; }

Observe que não precisamos usar getNome, SetNome para obter ou
atribuir valores às propriedades.

As propriedades geram automaticamente o campo privado para usar no get e set.
 
A diferença é que você não consegue definir um valor padrão para o campo na
inicialização da classe. Para isso você tem que usar o construtor da classe.

Resultado da execução do código ao lado:

Assim as propriedades auto implementadas permitem a você especificar rapidamente uma propriedade de uma classe sem precisar escrever código para as propriedades Get e Set.

A seguir um resumo do mesmo recurso para o VB .NET:

Outro novo recurso muito legal está relacionado com a definição de propriedades na linguagem VB .NET.  Vejamos...

- VS 2008 - como era - Para definir uma propriedade tínhamos que definir o GET e o SET

    Private _nome As String = "Macoratti"
    Property Nome() As String
        Get
            Return _nome
        End Get
        Set(ByVal value As String)
            _nome = value
        End Set
    End Property
    Private _pedidosLista As New List(Of Pedidos)
    Property PedidoLista() As List(Of Pedidos)
        Get
            Return _pedidosLista
        End Get
        Set(ByVal value As List(Of Pedidos))
            _pedidosLista = value
        End Set
    End Property

- VS 2010 - Novo recurso - Usamos o recurso chamado propriedades auto-implementadas.

Property Nome As String = "Macoratti"

Property PedidosLista As New List(Of Pedidos)
 

Aqui temos o que chamamos de propriedades auto-implementadas que torna a declaração de propriedades mais concisa quando nenhuma lógica adicional é requerida na propriedade.

Outros exemplos para o VB .NET:

Public Property Nome As String
Public
Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()

Uma propriedade auto-implementada é equivalente a uma propriedade para o qual o valor da propriedade é armazenado em um campo privado.

Assim economizamos 7 linhas de código.

"Não se turbe o vosso coração;crede em Deus, crede também em mim." (João 14:1)

Referências:
  • http://msdn.microsoft.com/pt-br/library/bb384054.aspx

  • How to: Implement a Lightweight Class with Auto-Implemented Properties (C# Programming)

  • VS2010 - VB .NET - Novos Recursos

  • Seção VB .NET do site Macoratti.net

  • Super DVD .NET - A sua porta de entrada na plataforma .NET

  • Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#


  • José Carlos Macoratti