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.

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)
{
   
System.out.println(" Código em C#");
}

- 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> Property <nome>() As <tipo>
    Get
       '...
    End Get
    Set
         '...
    End Set
End Property
<escopo> <tipo> <nome>
{
    get{
        //...
    }
    set{
        //..
    }
}

<escopo> ReadOnly Property <nome> As <tipo>
   
Get
       '...
   
End Get
End Property

<escopo> <tipo> <nome>
{
   
get{
        //...
    }
}

<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 Twitter

Referências:


José Carlos Macoratti