BT

Auto-implemented Properties no VB e C#

por Jonathan Allen , traduzido por Victor Franzonatto em 16 Jul 2009 |

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.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT