BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Auto-implemented Properties no VB e C#

Auto-implemented Properties no VB e C#

C# adicionou auto-implemented properties na versão 3, mas o Visual Basic foi incapaz de igualar-se naquele momento. Com a iminente release do .Net 4.0, VB avançou nesta área, mas com um toque diferente. Em C#, auto-implemented properties são escritas da seguinte forma:

public string FirstName {get; set;}

Visual Basic requer a palavra-chave Property, que significa que não precisa do par set/get para distinguir de um atributo comum. Assim, auto-implemented properties no VB são apenas uma nova declaração para um atributo.

Public Property FirstName As String

Para ambos, VB e C#, a propriedade é automaticamente associada a um atributo privado. Em C# este membro tem um nome gerado automaticamente como “<k_BackingField“ e, obviamente, não é acessível utilizando a sintaxe normal do C#. O Visual Basic é menos criativo, limitando-se a adicionar um underscore antes do nome da propriedade. Portanto, se sua propriedade é chamada de “FirstName“, existirá um atributo privado chamado ”_FirstName”.

Ter acesso direto a esse atributo privado deve tornar mais coisas possíveis. Pensando de forma lógica, ao menos uma deveria ser capaz de prover coisas como marcar uma propriedade ReadOnly e informar seu valor pelo construtor. Infelizmente, isso não é uma opção.

Apesar de sua aparente limitação, está realmente mais flexível. Você pode marcar o setter como private ou protected, efetivamente resultando no mesmo efeito quando tendo acesso direto ao atributo privado.

public string FirstName {get; private set;}

Uma limitação para ambas as linguagens é que elas ainda não tem nenhuma feature para objetos imutáveis. Se você quiser objetos onde as propriedades são todas somente leitura e atribuir os valores no construtor, você ainda tem que escrever o mesmo código que escreveria no .Net 1.0.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT