C# OU VB.NET

OCELOT 17/12/2012 22:27:14
#416107
Desde o .Net 1.1 eu trabalho exclusivamente com C#, sendo que trabalhei com VB.Net na época do .Net 1.0 até um pouco durante o 1.1

Eu entendo melhor de C# do que de VB.Net apenas pela prática, não tenho dificuldade nenhuma com as duas linguagens, e não sei se não entendi o que você disse ou você não entendeu o que eu disse, então vou tentar explicar, quando você postou isso:

Citação:


VB.NET


Private str_intIDBaseGeneral As Integer

Public Property intIDBaseGeneral() As Integer
Get
Return str_intIDBaseGeneral
End Get
Set
str_intIDBaseGeneral = Value
End Set
End Property

C#

public int intIDBaseGeneral { get; set; }

Olhou a diferênça de quantidade de código e linhas...................



Me deu a entender que você está dizendo que no VB.Net não existe equivalente direto daquela linha de código do C#, tendo que fazer o Get e o Set manualmente, enquanto no C# não se precisa fazer ele

Então eu dei o exemplo da propriedade automática do VB.Net, e disse que ela faz exatamente o mesmo que esta linha do C#

O que acho que você não entendeu é que isso daqui:

Public Property NomeDaPropriedade As String


Essa linha acima é um Get e Set exatamente da mesma forma que

public string NomeDaPropriedade {get; set;}


Os dois geram códigos praticamente identicos no nivel do IL, se você sabe como funcionam os getters e setters você sabe que não existe mágica, esse código acima no C# quando compilado vira um código equivalente a esse
private string _NomeDaPropriedade;
public string NomeDaPropriedade
{
get { return _NomeDaPropriedade; }
set { _NomeDaPropriedade = value; }
}


E quando digo que ele vira um código equivalente a esse não digo apenas que ele age dessa forma, digo que o compilador vai gerar o IL que faz exatamente isso da forma como está ali como se você tivesse digitado esse código

Com o único detalhe que o nome gerado para o campo que guarda o valor no VB é sempre o mesmo nome da propriedade com um underline como prefixo, já no C# ele é um nome especial que não se pode criar diretamente com C#, em vez de _NomeDaPorpriedade o campo seria chamado algo do tipo [ô]<NomeDaPropriedade>k_BackingField[ô]

Página 2 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas