Quais são as propriedades automáticas em C # e qual é o seu propósito?

Alguém poderia fornecer uma explicação muito simples de propriedades automáticas em c #, sua finalidade e talvez alguns exemplos? Tente manter as coisas em termos leigos, por favor!

Propriedades automáticas são usadas quando nenhuma lógica adicional é necessária nos accessres da propriedade.
A declaração seria algo como isto:

public int SomeProperty { get; set; } 

Eles são apenas açúcar sintático, então você não precisará escrever o seguinte código mais longo:

  private int _someField; public int SomeProperty { get { return _someField;} set { _someField = value;} } 

Edit: Expandindo um pouco, eles são usados ​​para facilitar a inclusão de variables ​​privadas na class, mas permitem que elas fiquem visíveis fora da class (sem poder modificá-las)

Ah, e outra vantagem com propriedades automáticas é que você pode usá-las em interfaces ! (Que não permitem variables ​​de membro de qualquer tipo)

Com propriedades normais, você pode fazer algo como:

 private string example; public string Example { get { return example; } set { example = value; } } 

Propriedades automáticas permitem criar algo realmente conciso:

 public string Example { get; set; } 

Então, se você quisesse criar um campo onde ele só pudesse ser definido dentro da class, você poderia fazer:

 public string Example { get; private set; } 

Isso seria equivalente a:

 private string example; public string Example { get { return example; } private set { example = value; } } 

Ou em Java:

 private String example; public String getExample() { return example; } public void setExample(String value) { example = value; } 

Edit: @Paya também me alertou para:

Se você está perguntando por que você usaria Propriedades ou Propriedades Automáticas, esta é a filosofia de design por trás disso.

Um princípio de design importante é que você nunca exponha campos como públicos, mas sempre acessa tudo via propriedades. Isso porque você nunca sabe quando um campo é acessado e, mais importante, quando é definido. Agora, na maior parte do tempo, nunca há nenhum processamento necessário durante a configuração ou obtenção do valor (por exemplo, verificação de intervalo). É por isso que as propriedades automáticas foram criadas. Eles são uma forma simples, de uma linha, de criar uma propriedade. O armazenamento de apoio para isso é criado pelo compilador.

Embora isso seja o que eu faço mesmo para meus programas internos, é provavelmente mais importante para aqueles projetados para uso público (para venda, código aberto, etc). Se você usar uma Propriedade Automática e depois decidir que precisa fazer outra coisa no set ou get , poderá alterar facilmente seu código sem quebrar a interface pública.

Eles são apenas um atalho de codificação para salvar o programador algumas teclas. Em vez de digitar tudo isso:

 private string _lastName; public string LastName { get { return _lastName; } set { _lastName = value; } } 

você pode apenas digitar:

 public string LastName { get; set; } 

e deixe o compilador gerar o resto automaticamente.

De propriedades implementadas automaticamente (guia de programação C #) :

No C # 3.0 e posterior, as propriedades implementadas automaticamente tornam a declaração de propriedade mais concisa quando nenhuma lógica adicional é necessária nos accessres da propriedade. Eles também permitem que o código do cliente crie objects.
Quando você declara uma propriedade, o compilador cria um campo de apoio anônimo privado que só pode ser acessado por meio dos accessres get e set da propriedade.

 class Person { public string Name { get; set; } } 

Eu de versões anteriores do C #, a fim de usar as propriedades, você precisa criar um campo para manter o valor (chamado de um Backing Store):

 private string _something; public string Prop { get { return _something; } } 

Começando com o C # 3.0, esse requisito não é mais necessário, e o compilador criará automaticamente o armazenamento de apoio para você, portanto, não há necessidade de declarar o campo _something.

Você pode ler mais sobre esse assunto aqui: http://msdn.microsoft.com/en-us/library/bb384054.aspx

Espero que isto ajude.