Anda di halaman 1dari 7

VB.NET ou C# ? Eis a questo ...

Atendendo diversos pedidos neste artigo eu vou falar um pouco sobre C# ; no 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 no pretendo abandonar o Visual Basic vou neste artigo fazer uma comparao entre as duas linguagens : VB.NET e C# em alguns pontos chaves. Com isto pretendo mostrar que C# no um bicho de 7 cabeas ( talvez 5... ). Vamos ao que interessa...

1- A apresentao do Cdigo
- Quando voc for codificar em C# deve colocar o ponto e vrgula no final de cada linha de cdigo. (Igual ao Java) Ex: private string nome; int contador = 10;

- Em C# voc pode agrupar blocos de cdigo dentro de um par de chaves (Cada chave aberta deve ser fechada) : { } Ex: if (x == 10) { System.out.println(" Cdigo em C#"); } - Em C# todas as variveis devem estar declaradas com um tipo de dados Ex: String nome = "Macoratti" ;

2- Declarao de variveis
No Visual Basic .NET usamos a seguinte sintaxe: <escopo> <varivel> As <tipo> ou <escopo> <varivel> As <tipo> = <valor> Em C# declaramos variveis da seguinte forma: <escopo> <tipo> <varivel> = <valor>; Visual Basic .NET Dim Dim Dim Dim Dim Dim contador As Integer contador As Integer = 10 dados As Double dados As Double = 3.5# valor As Single nome As String int contador; int contador = 10; double dados; double dados = 3.5; float f; string nome; <escopo> <tipo> <varivel>; ou

C#

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

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 Private Friend Protected Protected Friend Public C# Private Internal Protected protected internal Public Descrio do escopo Acessvel dentro do mesmo mdulo, classe ou estrutura. Acessvel desde dentro do mesmo Projeto, mas no fora dele. Acessvel dentro da mesma classe ou desde uma classe derivada dela Acessvel dentro das classes derivadas ou dentro do mesmo projeto. Acessvel a partir de qualquer lugar do projeto

3- Laos - For/Next
Visual Basic .NET Dim i As Integer For i = 1 To 10 ' ... Next C# int i; for(i = 1; i<= 10; i++) { // ... } for(int i = 1; i<=10; i++) For i As Integer = 1 To 10 Dim objeto As <Tipo> For Each objeto In coleo For Each objeto As <Tipo> In coleo foreach(<Tipo> objeto in coleo) foreach(<Tipo> objeto in coleo)

4- Laos - While, Do... Loop


Visual Basic .NET Do '... Loop While <expresso> While <expresso> do { //... }while(<expresso>); while(<expresso>) C#

'... End While Do While <expresso> '... Loop Do

{ } //...

while(<expresso>) { //... } while(true) { //... } while(!<expresso>) { //... } do { //... }while(!<expresso>);

'... Loop Do Until <expresso> '... Loop Do

'... Loop Until <expresso>

5- Comparaes - If/then/ Else...


Visual Basic .NET If x = 10 Then '... End If If x = 10 Then '... Else '... End If if(x == 10) { //... } if(x == 10) { //... } else { //... } if(x == 10) { //... } else if(x > 50) { //... } C#

If x = 10 Then '... ElseIf x > 50 Then '... End If

6 - Operadores lgicos e aritmticos


Visual Basic .NET And AndAlso Or OrElse XOr Not = <> & (concatenao de cadeias) \ (diviso de nmeros inteiros) \= Mod Is Nothing C# & && | || ^ ! == != + / /= % == null

7- Procedimentos / Mtodos (funces, propiedades)


Em Visual Basic .NET existem trs tipos de procedimentos: Sub, Function e Property

- Procedimento Visual Basic .NET <escopo> Sub <nome>() End Sub C# <escopo> void <nome>() { }

- Funo Visual Basic .NET <escopo> Function <nome>() As <tipo> End Function C# <escopo> <tipo> <nome>() { }

- Propriedade Visual Basic .NET <escopo> Property <nome>() As <tipo> Get '... C# <escopo> <tipo> <nome> { get{

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

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

8- Realizando uma conexo 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 conexo com o provedor .NET SqlClient mas voc poder usar tambm o provedor OleDb ou ODBC. Como voc percebeu existe pouca diferena na sintaxe para acesso a dados entre VB.NET e C#. Em um outro artigo abordarei a migrao VB.NET para C# , e , se isto realmente possvel.... Aguarde!!! Jos Carlos Macoratti