 VB.NET ou C# ? 
Eis a questão ...
     VB.NET ou C# ? 
Eis a questão ... 
Atendendo diversos pedidos neste
artigo eu vou falar um pouco sobre C# ; não que eu seja um
perito em C# , mas como estou trabalhando com Java há algum
tempo sinto-me a vontade para falar sobre C# devido a
similaridade 'assombrosa' ( ) entre estas duas linguagens.
) entre estas duas linguagens.
Como não pretendo abandonar o
Visual Basic vou neste artigo fazer uma comparação entre as
duas linguagens : VB.NET e C# em alguns pontos chaves. Com isto
pretendo mostrar que C# não é um bicho de 7 cabeças ( talvez
5... ).
). 
Vamos ao que interessa...
1- A apresentação do Código
| - Quando você for codificar em C# deve
        colocar o ponto e vírgula no final de cada linha de
        código. (Igual ao Java) Ex: private string nome; int contador = 10; - Em C# você pode agrupar blocos de código dentro de um par de chaves (Cada chave aberta deve ser fechada) : { } Ex: if 
        (x == 10) - Em C# todas as variáveis devem estar declaradas com um tipo de dados Ex: String nome = "Macoratti" ; | 
2- Declaração de variáveis
No Visual Basic .NET usamos a seguinte sintaxe: <escopo> <variável> As <tipo> ou <escopo> <variável> As <tipo> = <valor>
Em C# declaramos variáveis da seguinte forma: <escopo> <tipo> <variável>; ou <escopo> <tipo> <variável> = <valor>;
| Visual Basic .NET | C# | 
| Dim contador As Integer Dim contador As Integer = 10 Dim dados As Double Dim dados As Double = 3.5# Dim valor As Single Dim nome As String Dim c As Char Dim l As Long Dim m As Decimal Dim obj As MinhaClasse Dim obj1 As New MinhaClasse() Dim obj2 As MinhaClasse = New MinhaClasse() Public endereco As String Private cidade As String | int contador; int contador = 10; double dados; double dados = 3.5; float f; string nome; char c; long l; decimal m; MinhaClasse obj; MinhaClasse obj1 = new MinhaClasse(); MinhaClasse obj2 = new MinhaClasse(); public string endereco; private string cidade; | 
3- Escopo
| Visual Basic .NET | C# | Descrição do escopo | 
| Private | private | Acessível dentro do mesmo módulo, classe ou estrutura. | 
| Friend | internal | Acessível desde dentro do mesmo Projeto, mas não fora dele. | 
| Protected | protected | Acessível dentro da mesma classe ou desde uma classe derivada dela | 
| Protected Friend | protected internal | Acessível dentro das classes derivadas ou dentro do mesmo projeto. | 
| Public | public | Acessível a partir de qualquer lugar do projeto | 
3- Laços - For/Next
| Visual Basic .NET | C# | 
| Dim i As Integer
For i = 1 To 10
    ' ...
Next | int i;
for(i = 1; i<= 10; i++)
{
    // ...
} | 
| For i As Integer = 1 To 10 | for(int i = 1; i<=10; i++) | 
| Dim objeto As <Tipo> For Each objeto In coleção | foreach(<Tipo> objeto in coleção) | 
| For Each objeto As <Tipo> In coleção | foreach(<Tipo> objeto in coleção) | 
4- Laços - While, Do... Loop
| Visual Basic .NET | C# | 
| Do
    '...
Loop While <expressão> | do
{
    //...
}while(<expressão>); | 
| While <expressão>
    '...
End While | while(<expressão>)
{
    //...
} | 
| Do While <expressão>
    '...
Loop | while(<expressão>)
{
    //...
} | 
| Do
    '...
Loop | while(true)
{
    //...
} | 
| Do Until <expressão>
    '...
Loop | while(!<expressão>)
{
    //...
} | 
| Do
    '...
Loop Until <expressão> | do
{
    //...
}while(!<expressão>); | 
5- Comparações - If/then/ Else...
| Visual Basic .NET | C# | 
| If x = 10 Then '... End If | if(x == 10)
{
    //...
} | 
| If x = 10 Then '... Else '... End If | if(x == 10)
{
   //...
}
else
{
   //...
} | 
| If x = 10 Then '... ElseIf x > 50 Then '... End If | if(x == 10)
{
   //...
}
else if(x > 50)
{
   //...
} | 
6 - Operadores lógicos e aritméticos
| Visual Basic .NET | C# | 
| And | & | 
| AndAlso | && | 
| Or | | | 
| OrElse | || | 
| XOr | ^ | 
| Not | ! | 
| = | == | 
| <> | != | 
| & (concatenacão de cadeias) | + | 
| \ (divisão de números enteiros) | / | 
| \= | /= | 
| Mod | % | 
| Is Nothing | == null | 
7- Procedimentos / Métodos (funcões, propiedades)
Em Visual Basic .NET 
existem três tipos de procedimentos: Sub, Function e Property
 
- Procedimento
| Visual Basic .NET | C# | 
| <escopo> Sub <nome>() End Sub | <escopo> void <nome>()
{
} | 
- Função
| Visual Basic .NET | C# | 
| <escopo> Function <nome>() As <tipo> End Function | <escopo> <tipo> <nome>()
{
} | 
- Propriedade
| Visual Basic .NET | C# | 
| 
 | 
 | 
| 
 | 
 | 
| <escopo> 
        WriteOnly
        Property
        <nome> As
        <tipo> Set '... End Set End Property | <escopo> <tipo>
        <nome> { set{ //.. } } | 
8- Realizando uma conexão com um banco de dados
| C# | 
| SqlConnection con = new SqlConnection (); con.ConnectionString = "Initial Catalog=Teste;Data Source=Clientes;trusted_connection=True"; con.Open(); | 
| VB.NET | 
| Dim con As SqlConnection = new SqlConnection () con.ConnectionString = "Initial Catalog=Teste;Data Source=Clientes;trusted_connection=True" con.Open() | 
9- Executando um comando
| C# | 
| SqlCommand cmd = new SqlCommand (); cmd.Connection = con; cmd.CommandType = CommandType.Text; cmd.CommandText = "Select * from clientes"; //atribuir o comando a um DataReader ou DataAdpater | 
| VB .NET | 
| Dim cmd As SqlCommand = new SqlCommand () cmd.Connection = con cmd.CommandType = CommandType.Text cmd.CommandText = "Select * from clientes" //atribuir o comando a um DataReader ou DataAdpater | 
10- Executando um DataReader
| C# | 
| SqlDataReader dr = cmd.ExecuteReader(); While (dr.Read()) {Console.WriteLine(dr.GetInt32(0) + " , " + dr.GetString(1) + " , " + dr.GetString(1)); } dr.Close(); | 
| VB .NET | 
| Dim dr As SqlDataReader = con.ExecuteReader(); While dr.Read() Console.WriteLine(dr.GetInt32(0) & " , " & dr.GetString(1) & " , " & dr.GetString(1)); End While dr.Close() | 
11- Preenchendo um DataSet
| C# | 
| SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds,"Clientes"); | 
| VB .NET | 
| Dim da As SqlDataAdapter = new SqlDataAdapter(cmd); Dim ds AS DataSet ds = new DataSet(); da.Fill(ds,"Clientes"); | 
12- Acessando dados em um DataSet (DataTable)
| C# | 
| foreach (DataColumn dc in ds.Tables(0).Columns) {      Console.Write("{0,10}", dc.ColumName);} foreach (DataRow dr in ds.Tables[0].Rows) {for ( int i =0 ; i < ds.Tables[0].Columns.Count ; i++)    {      Console.WriteLine("{0,10}",dr[i]);      } Console.WriteLine(); } | 
| VB .NET | 
| Dim dc as DataColumn For Each dc In ds.Tables(0).Columns       Console.Write("{0,10}", dc.ColumName)Next Dim dr As DataRow For Each dr In ds.Tables(0).Rows Dim i As Integer For i = 0 To ds.Tables(0).Columns.Count - 1          Console.WriteLine("{0,10}",dr(i))      Next Console.WriteLine(); Next | 
13- Salvando um DataSet com um arquivo XML
| C# | 
| ds.WriteXml(@"C:\teste\clientes.xml"); | 
| VB .NET | 
| ds.WriteXml("C:\teste\clientes.xml") | 
Considerei em todos os casos a conexão com o provedor .NET SqlClient mas você poder usar também o provedor OleDb ou ODBC.
Como você percebeu existe pouca diferença na sintaxe para acesso a dados entre VB.NET e C#.
Em um outro artigo abordarei a migração VB.NET para C# , e , se isto é realmente possível....
Aguarde!!! 
| Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ?? 
    Chegou o
    
    Super DVD C# com exclusivo material de 
    suporte e vídeo aulas com curso básico sobre C# | 
   Gostou ?   Compartilhe no Facebook
 Compartilhe no Facebook    Compartilhe no Twitter
 Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Curso VB .NET Básico - Vídeo Aulas
Curso C# Basico - Vídeo Aulas