Se você der uma olhada aqui , você verá que o seguinte código:
class Example
{
private List<LinearLayout> layouts1 { get; } = new List<LinearLayout>();
}
É diminuído pelo compilador para:
internal class Example
{
private readonly List<LinearLayout> <layouts1>k__BackingField = new List<LinearLayout>();
private List<LinearLayout> layouts1
{
get
{
return <layouts1>k__BackingField;
}
}
}
ea propriedade fica ainda mais reduzida para uma % co_de método%.
Em outras palavras, os inicializadores de propriedade automática são puro açúcar sintático. Eles fornecem um meio de usar propriedades automáticas, enquanto ainda permitem que o campo de apoio seja inicializado.
Então, do ponto de vista da mutabilidade, não há diferença entre eles. Ambos fornecem acesso somente leitura a uma lista que é inicializada quando uma instância da classe é criada.
É possível que ele crie uma pequena sobrecarga de desempenho, já que o método deve ser chamado para obter a referência da lista, mas é provável que o CLR JIT otimize o método e apenas acesse o campo diretamente.
O uso mais óbvio para propriedades privadas é para fins de carregamento lento / execução diferida . Existem outros usos, mas como orientação, eles são muitas vezes inúteis "ruído". Eu não iria tão longe a ponto de dizer que usar uma propriedade privada é pior do que apenas usar um campo, mas eu aconselho apenas usar um campo somente leitura para a maioria dos casos.