Eu vi algo como o seguinte em algum lugar e estava me perguntando o que significava. Eu sei que eles são getters e setters, mas quero saber por que o tipo de string é definido assim. Obrigado por me ajudar.
public string Type { get; set; }
c#
getter-setter
Maia
fonte
fonte
"Type"
, o tipo .NET que éSystem.string
. Não há nada mais nisso.Respostas:
Essas são propriedades implementadas automaticamente (propriedades automáticas para abreviar).
O compilador irá gerar automaticamente o equivalente à seguinte implementação simples:
fonte
public int b { get { return b * 2; } }
nenhum segundo campo necessário. Mas eu acho que quando você tem o levantador com um corpo, você precisa do segundo campo. E este mostra um levantador com corpo. Embora faça o mesmo que o único forro do questionador.=>
sintaxe e nenhuma palavra-chave de retorno. Embora não fosse isso que eu tinha em mente. Eu tinha em mente que o segundo campo era desnecessário, embora eu tenha descoberto que o segundo campo às vezes é necessário. No exemplo aqui, o segundo campo não é necessário (porque um setter padrão sem corpo faria isso), mas o respondente o estava colocando em (corpo do setter e segundo campo), para explicar ao questionador qual era sua linha sem o o segundo campo estava fazendo.Essa é uma propriedade automática e é a notação abreviada para isso:
fonte
<Type>k__BackingField
com reflexão.Em C # 6:
Agora é possível declarar as propriedades automáticas apenas como um campo:
Propriedades automáticas somente leitura
fonte
Não é diferente de fazer
fonte
Isso significa que o compilador define um campo de apoio em tempo de execução. Esta é a sintaxe para propriedades implementadas automaticamente.
Mais informações: propriedades implementadas automaticamente
fonte
É uma propriedade com suporte automático, basicamente equivalente a
fonte
Elas são chamadas de propriedades automáticas.
http://msdn.microsoft.com/en-us/library/bb384054.aspx
Funcionalmente (e em termos do IL compilado), eles são iguais às propriedades com campos de apoio.
fonte
Eu sei que esta é uma questão antiga, mas com o lançamento do C # 6, agora você pode fazer algo assim para propriedades privadas.
fonte
Você também pode usar uma expressão lambda
fonte