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) - 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>
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:
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