VB .NET x C#
- Programação - Comparação
Comparação entre as linguagens VB .NET e C# - Programação. Para consulta.
Propósito | VB.NET | C# |
Declarando variáveis |
Dim x As Integer
Public x As Integer = 10
|
int x;
int x = 10;
|
Comentários |
' comentário
x = 1 ' comentário
Rem comentário
|
// comentário
/* multiline
comentário */
|
Comandos de atribuição |
nVal = 7
|
nVal = 7;
|
Comandos condicionais |
If nCnt <= nMax Then
' mesmo que nTotal = nTotal + nCnt.
nTotal += nCnt
' Mesmo que nCnt = nCnt + 1
nCnt += 1
Else
nTotal += nCnt
nCnt -= 1
End If
|
if (nCnt <= nMax)
{
nTotal += nCnt;
nCnt++;
}
else
{
nTotal +=nCnt;
nCnt--;
}
|
Instruções de seleção |
Select Case n
Case 0
MsgBox ("Zero")
' No Visual Basic .NET exite
' O select no fim do Case.
Case 1
MsgBox ("Macoratti")
Case 2
MsgBox ("www.macoratti.net")
Case Else
MsgBox ("Default")
End Select
|
switch(n)
{
case 0:
Console.WriteLine("Zero");
break;
case 1:
Console.WriteLine("Macoratti");
break;
case 2:
Console.WriteLine("Teste");
break;
default:
Console.WriteLine("?");
break;
}
|
laço FOR |
For n = 1 To 10
MsgBox("O numero é " & n)
Next
For Each prop In obj
prop = 42
Next prop
|
for (int i = 1; i <= 10; i++)
Console.WriteLine( "O numero é {0}", i);
foreach(prop current in obj)
{
current=42;
}
|
Escondendo membros da classe base |
Public Class ClasseBase
' O elemento a ser sombreado
Public Z As Integer = 100
public Sub Test()
System.Console.WriteLine( "Teste em ClasseBase")
End Sub
End Class
Public Class ClasseDerivada
Inherits ClasseBase
' O elemento sombreado
Public Shadows Z As String = "*"
public Shadows Sub Teste()
System.Console.WriteLine("Teste em ClasseDerivada")
End Sub
End Class
Public Class UseClasses
' ClasseDerivada estende de ClasseBase.
Dim BObj As ClasseBase = New ClasseDerivada()
' Acesso através da classe derivada
Dim DObj As ClasseDerivada = New ClasseDerivada()
Public Sub Exibir_Z()
System.Console.WriteLine("Acesso através da classe base : " & BObj.Z)
System.Console.WriteLine("Acesso através da classe derivada: " & DObj.Z)
BObj.Teste()
DObj.Teste()
End Sub
End Class
|
public class ClasseBase
{
// O elemento a ser escondido
public int Z = 100;
public void Test()
{
System.Console.WriteLine("Teste em ClasseBase");
}
}
public class ClasseDerivada : ClasseBase
{
// O elemento oculto
public new string Z = "*";
public new void Teste()
{
System.Console.WriteLine("Teste em ClasseDerivada");
}
}
public class UseClasses
{
// ' ClasseDerivada estende de ClasseBase.
ClasseBase BObj = new ClasseDerivada();
// Acesso através da classe derivada
ClasseDerivada DObj = new ClasseDerivada();
public void Exibir_Z()
{
System.Console.WriteLine( "Acesso através da classe base: {0}", BObj.Z);
System.Console.WriteLine("Acesso através da classe derivada :{0}", DObj.Z);
BObj.Teste();
DObj.Teste();
}
}
|
laço WHILE |
' Teste no inicio do loop
While n < 100 .
' Mesmo que n = n + 1.
n += 1
End While
|
while (n < 100)
n++;
|
Passando parâmetro por valor |
' O argumento Y é passado por valor
Public Sub ABC( ByVal y As Long)
'Se ABC altera y, as mudanças não afetem x.
End Sub
ABC(x) ' Chama a rotina
' Você pode forçar os parâmetros a serem passados por valor
' independente de como eles são declarados encerrando os parâmetros em
' parênteses extras
ABC((x))
|
/* Note que não existe uma forma de passar tipos de referência (objetos)
estritamente por valor. Você pode escolher entre passar a referência
(essencialmente um ponteiro), ou uma referência para a referência
(um ponteiro para um ponteiro) */
void ABC(int x)
{ ...}
// Chamando o método
ABC(i);
|
Passando parâmetro por referência |
Public Sub ABC(ByRef y As Long)
' O parâmetro y é declarado por referência
' Se aBC altera y, as mudanças são feitas no valor de x
End Sub
ABC(x) ' Chama o procedimento
|
/ *
Observe que não existe uma maneira de passar tipos de referência
(objetos) estritamente em termos de valor. Você pode optar por passar
a referência (essencialmente, um ponteiro), ou uma referência ao valor
de referência (um ponteiro para um ponteiro) .
* /
/ / Note também que o métodos C# inseguros métodos podem ter ponteiros
/ / assim como os métodos C++
void ABC(ref int x)
{ ...}
//Chamando o método:
ABC(ref i);
|
Tratamento estruturado de exceções |
// try-catch-finally
Try
If x = 0 Then
Throw New Exception( "x é igual a zero")
Else
Throw New Exception("x não é igual a l zero")
End If
Catch err As System.Exception
MsgBox( "Error: " & Err.Description)
Finally
MsgBox( "Executando o bloco finally.")
End Try
|
// try-catch-finally
try
{
if (x == 0)
throw new System.Exception("x é igual a zero");
else
throw new System.Exception("x não é igual a zero");
}
catch (System.Exception err)
{
System.Console.WriteLine(err.Message);
}
finally
{
System.Console.WriteLine("Executando o bloco finally");
}
|
Definir uma referência de objeto como Nothing/Null |
o = Nothing
|
o = null;
|
Inicializando tipos de valor |
Dim dt as New System.DateTime( 2001, 4, 12, 22, 16, 49, 844)
|
System.DateTime dt = new System.DateTime( 2001, 4, 12, 22, 16, 49, 844); |