VB.Net versus Csharp

VB.NET

C#

Comentários
‘ linha única
Rem somente uma linha
// somente uma linha
/* Multiplas
linhas */
/// comentário XML em um linha
/** comentário XML em múltiplas linhas */
Tipos de dados
Tipos por Valor
Boolean
Byte
Char   (exemplo: “A”)
Short, Integer, Long
Single, Double
Decimal
DateTipos por Referência
Object
StringDim x As Integer
Console.WriteLine(x.GetType())     ‘ Imprime System.Int32
Console.WriteLine(TypeName(x))  ‘ Imprime Integer’ Conversão de Tipos
Dim numDecimal As Single = 3.5
Dim numInt As Integer
numInt = CType(numDecimal, Integer)   ‘ Define para 4
numInt = CInt(numDecimal)  ‘ mesmo resultado que com CType
numInt = Int(numDecimal)    ‘ Define para3 (A função Int trunca o decimal)
Tipos por Valor
bool
byte, sbyte
char   (exemplo: ‘A’)
short, ushort, int, uint, long, ulong
float, double
decimal
DateTimeTipos por Referência
object
stringint x;
Console.WriteLine(x.GetType());    // Imprime System.Int32
Console.WriteLine(typeof(int));      // Imprime System.Int32
// Conversão de Tipos
double numDecimal = 3.5;
int numInt = (int) numDecimal;   // define para 3  (trunca o decimal)
Constantes
Const MAX_STUDENTS As Integer = 25 const int MAX_STUDENTS = 25;
Enumerations
Enum Action
Start
[Stop]   ‘ Stop é uma palavra reservada
Rewind
Forward
End EnumEnum Status
Flunk = 50
Pass = 70
Excel = 90
End Enum

Dim a As Action = Action.Stop
If a <> Action.Start Then Console.WriteLine(a)     ‘ Imprime 1Console.WriteLine(Status.Pass)     ‘ Imprime 70
Console.WriteLine(Status.Pass.ToString())     ‘ Imprime Pass
enum Action {Start, Stop, Rewind, Forward};
enumStatus {Flunk = 50, Pass = 70, Excel = 90};Action a = Action.Stop;
if (a != Action.Start)
Console.WriteLine(a + ” e ” + (int) a);    // Imprime “Stop e 1″Console.WriteLine(Status.Pass);    // Imprime Pass
Operadores
Comparação

=  <  >  <=  >=  <>

Aritimético
+  –  *  /
Mod
  (divisão inteira)
^  (eleva a potência)

Atribuição
=  +=  -=  *=  /=  =  ^=  <<=  >>=  &=

Bitwise
And  AndAlso  Or  OrElse  Not  <<  >>

Logico
And  AndAlso  Or  OrElse  Not

Note: AndAlso and OrElse are for short-circuiting logical evaluations

Concatenação de strings
&

Comparação

==  <  >  <=  >=  !=

Aritimético
+  –  *  /
%  (mod)
/  (idivisão inteira se ambos os operadores são ints)
Math.Pow(x, y) (eleva a potência)

Atribuição
=  +=  -=  *=  /=   %=  &=  |=  ^=  <<=  >>=  ++  —

Bitwise
&  |  ^   ~  <<  >>

Logico
&&  ||   !

Note: && and || perform short-circuit logical evaluations

Concatenação de strings
+

If
saudacao= IIf(age < 20, “Tudo bem ?”, “Ola”)

‘ Uma linha não requere “End If”, nem “Else”
If language = “VB.NET” Then langType = “verbose”

‘ Usar : para por dois comandos na mesma linha
If x <> 100 And y < 5 Then x *= 5 : y *= 2

‘ Preferido
If x <> 100 And y < 5 Then
x *= 5
y *= 2
End If

‘ para quebrar linhas longas use  _ (underscore)
If teste1 < teste2 And teste3 > 100 Then _
outra linha

If x > 5 Then
x *= y
ElseIf x = 5 Then
x += y
ElseIf x < 10 Then
x -= y
Else
x /= y
End If

Select Case color   ‘ Deve ser um tipo primitivo
Case “pink”, “red”
r += 1
Case “blue”
b += 1
Case “green”
g += 1
Case Else
other += 1
End Select

saudacao= age < 20 ? “Tudo bem ?” : “Ola”;

if (x != 100 && y < 5) {    // múltiplos comandos precisam estar entre {}
x *= 5;
y *= 2;
}

Não precisa de  _ ou : desde que ; é usado para terminar cada comando


if
(x > 5)
x *= y;
else if (x == 5)
x += y;
else if (x < 10)
x -= y;
else
x /= y;

switch (color) {                          // precisa ser um inteiro ou string
case “pink”:
case “red”:    r++;    break;        // break é obrigatorio
case “blue”:   b++;   break;
  case “green”: g++;   break;
  default:    other++;   break;
}

Loops
Loops com Pré teste
While c < 10
c += 1
End While
Do Until c = 10
c += 1
Loop
Do While c < 10
c += 1
Loop
For c = 2 To 10 Step 2
Console.WriteLine(c)
Next
loop com teste posterior
Do
c += 1
Loop While c < 10
Do
c += 1
Loop Until c = 10

‘  loopin em Array ou collection
Dim nomes As String() = {“Janice”, “Miriam”, “Macoratti”}
For Each s As String In nomes
Console.WriteLine(s)
Next

Loops com pré teste// não tem a palavra chave until
while (i < 10)
i++;for (i = 2; i < = 10; i += 2)
Console.WriteLine(i);loop com teste posteriordo
i++;
while (i < 10);

‘  loopin em Array ou collection
string[] nomes = {“Janice”, “Miriam”, “Macoratti”};
foreach (string s in nomes)
Console.WriteLine(s);

Arrays
Dim nums() As Integer = {1, 2, 3}
For i As Integer = 0 To nums.Length – 1
Console.WriteLine(nums(i))
Next’ 4 é o indice do último elemento, então ele trata 5 elementos
Dim names(4) As String
names(0) = “Macoratti”
names(5) = “Miriam”  ‘ Throws System.IndexOutOfRangeException’ Redimensiona um array mantendo os valores existentes
ReDim Preservenomes(6)Dim DuasD(rows-1, cols-1) As Single
DuasD(2, 0) = 4.5

Dim jagged()() As Integer = { _
New Integer(4) {}, New Integer(1) {}, New Integer(2) {} }
jagged(0)(4) = 5

int[] nums = {1, 2, 3};
for (int i = 0; i < nums.Length; i++)
Console.WriteLine(nums[i]);// 5  é o tamanho do array
string[] names = new string[5];
names[0] = “Macoratti”;
names[5] = “Miriam”;   // Throws System.IndexOutOfRangeException// C# não pode redimensionar um array dinamicamente. Copie em um novo array
string[] nomes2 = new string[7];
Array.Copy(nomes, nomes2, nomes.Length);  // ou nomes.CopyTo(nomes2, 0);float[,] DuasD = new float[rows, cols];
DuasD[2,0] = 4.5f;

int[][] jagged = new int[3][] {
new int[5], new int[2], new int[3] };
jagged[0][4] = 5;

Funções
‘ Passa por valor (é o padrão)
Sub TestFunc(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)
x += 1
y += 1
z = 5
End SubDim a = 1, b = 1, c As Integer   ‘
TestaFunc(a, b, c)
Console.WriteLine(“{0} {1} {2}”, a, b, c)   ‘ 1 2 5’ Aceita número de argumentos variáveis
Function Sum(ByVal ParamArray nums As Integer()) As Integer
Sum = 0
For Each i As Integer In nums
Sum += i
Next
End FunctionDim total As Integer = Sum(4, 3, 2, 1)   ‘ retorna 10
Sub DizOla(ByVal nome As String, Optional ByVal prefix As String = “”)
Console.WriteLine(Saudacoes, ” & prefix & ” ” & nome)
End Sub

DizOla(“Strangelove”, “Dr.”)
DizOla(“Macoratti”)

// ‘ Passa por valor (é o padrão)
void TestFunc(int x, ref int y, out int z) {
x++;
y++;
z = 5;
}int a = 1, b = 1, c;  // c não precisa inicialização
TesatFunc(a, ref b, out c);
Console.WriteLine(“{0} {1} {2}”, a, b, c);  // 1 2 5′ Aceita número de argumentos variáveis
int Sum(params int[] nums) {
int sum = 0;
foreach (int i in nums)
sum += i;
return sum;
}int total = Sum(4, 3, 2, 1);   // retorna 10
void DizOla(string nome, string prefix) {
Console.WriteLine(“Greetings, ” + prefix + ” ” + nome);
}void DizOla(string nome) {
DizOla(nome, “”);
}
Tratamento de exceção
‘ Tratamento de erro desatualizado
On Error GoTo MyErrorHandler

MyErrorHandler: Console.WriteLine(Err.Description)Dim ex As New Exception(“Alguma coisa esta errada”)
Throw exTry
y = 0
x = 10 / y
Catch ex As Exception When y = 0 ‘ Argumento e When é opcional          Console.WriteLine(ex.Message)
Finally
Beep()
End Try
Exception up = new Exception(“Alguma coisa esta errada.”);
throwup;try {
y = 0;
x = 10 / y;
}
catch (Exception ex) {   // Argumento é opcional   Console.WriteLine(ex.Message);
}
finally {
}
Namespaces
Namespace Harding.Compsci.Graphics

End Namespace‘ orNamespace Harding
Namespace Compsci
Namespace Graphics

End Namespace
End Namespace
End Namespace
Imports Harding.Compsci.Graphics
namespace Harding.Compsci.Graphics {

}// ornamespace Harding {
namespace Compsci {
namespace Graphics {

}
}
}using Harding.Compsci.Graphics;
Classes / Interfaces
‘Modificadores de acesso
Public
Private
Friend
Protected
Protected Friend
Shared’ herança
Class FootballGame
Inherits Competition

End Class‘ Definição de interface
Interface IAlarmClock

End Interface// Extendendo uma interface
Interface IAlarmClock
Inherits IClock

End Interface

// Implementando uma interface
Class WristWatch
Implements IAlarmClock, ITimer

End Class

‘Modificadores de acesso
public
private
internal
protected
protected internal
static’ herança
class FootballGame : Competition {

}
//’ Definição de interface
interface IAlarmClock {

}// Extendendo uma interface
interface IAlarmClock : IClock {

}
//Implementando uma interface
class WristWatch : IAlarmClock, ITimer {

}
Construtores
Class SuperHeroii
Private _nivelPoder As IntegerPublic Sub New ()
_nivelPoder = 0
End SubPublic Sub New (ByVal nivelPoder As Integer)
Me._nivelPoder = nivelPoder
End SubProtected Overrides Sub Finalize ()
MyBase.Finalize()
End Sub
End Class
class SuperHeroi {
private int _nivelPoder;public SuperHeroi() {
_nivelPoder = 0;
}public SuperHero8(int nivelPoder) {
this._nivelPoder= nivelPoder;
}~SuperHeroi() {
}
}
Objetos
Dimheroii As SuperHeroi = New SuperHeroi
Withheroi
.Nome = “HomedeFerro”
.nivelPoder = 3
End Withheroi.Defend(“Miriam”)
heroi.Rest()     ‘ Chamando um método Shared
‘ ou
SuperHeroi.Rest()Dim heroi2 As SuperHeroi =heroi  ‘ ambos se referem ao mesmo objeto
hero2.Nome = “MulherGato”
Console.WriteLine(heroi.Nome)   ‘ Imprime MulherGatohero = Nothing    ‘ Libera o objeto

If heroi Is Nothing Then _
heroi = New SuperHeroi

Dim obj As Object = New SuperHeroi
If TypeOf obj Is SuperHeroi Then _
Console.WriteLine(“è um objeto SuperHeroi .”)

SuperHeroi heroi = new SuperHeroi();

hero.Nome = “HomedeFerro”;
hero.nivelPoder = 3;

hero.Defend(“Miriam”);
SuperHeroi.Rest();   // Chamando um método estático
SuperHeroiheroi2 =heroi;   // ambos se referem ao mesmo objeto
hero2.Name = “MulherGato”;
Console.WriteLine(heroi.Nome);   // Imprime MulherGato

 

hero = null ;   // libera o objeto

if (heroi == null)
heroi = new SuperHeroi();
Object obj = new SuperHeroi();
if (obj is SuperHeroi)
Console.WriteLine(“è um objeto SuperHeroi”);

Structs
Structure Aluno
Public nome As String
Public gpa As SinglePublic Sub New(ByVal nome As String, ByVal gpa As Single)
Me.nome = nome
Me.gpa = gpa
End Sub
End StructureDim stu As Aluno = New Aluno(“Jefferson”, 3.5)
Dim stu2 As Aluno = stustu2.nome = “Jessica”
Console.WriteLine(stu.nome)    ‘ Imprime Jefferson
Console.WriteLine(stu2.nome)  ‘ Imprime Jessica
struct Aluno {
public string nome;
public float gpa;public Aluno(string nome, float gpa) {
this.nome = nome;
this.gpa = gpa;
}
}
Aluno stu = new Aluno(“Jefferson”, 3.5f);
Aluno stu2 = stu;stu2.nome = “Jessica”;
Console.WriteLine(stu.nome);    // Imprime Jefferson
Console.WriteLine(stu2.nome);   // Imprime Jessica
Propriedades
Private _size As Integer

Public Property Size() As Integer
Get
Return _size
End Get
Set (ByVal Value As Integer)
If Value < 0 Then
_size = 0
Else
_size = Value
End If
End Set
End Property

foo.Size += 1

private int _size;

public int Size {
get {
return _size;
}
set {
if (value < 0)
_size = 0;
else
_size = value;
}
}
foo.Size++;

Console I/O
Caracteres especiais
vbCrLf, vbCr, vbLf, vbNewLine
vbNullString
vbTab
vbBack
vbFormFeed
vbVerticalTab
“”
Chr(65)  ‘ Retorna ‘A’Console.Write(“Qual o seu nome “)
Dim name As String = Console.ReadLine()
Console.Write(“Quantos anos voce tem? “)
Dim idade As Integer = Val(Console.ReadLine())
Console.WriteLine(“{0} tem {1} anos.”, name, idade)
‘ ou
Console.WriteLine(nome & ” tem ” & idade & ” anos”)Dim c As Integer
c = Console.Read()    ‘Le um único caractere
Console.WriteLine(c)   ‘ Imprime 65  se usuario entrar “A”
Sequencia de escape
n, r
t

“Convert.ToChar(65)  // Retorna ‘A’ –
// ou
(char) 65Console.Write(“Qual o seu nome “);
string name = Console.ReadLine();
Console.Write(“Quantos anos voce tem? “);
int idade = Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“{0} tem {1} anos.”, name, idade);
// ou
Console.WriteLine(nome + ” tem ” + idade + ” anos.”);
int c = Console.Read();  // ‘Le um único caractere
Console.WriteLine(c);    // Imprime 65 se usuario entrar “A”

File I/O
Imports System.IO

Dim writer As StreamWriter = File.CreateText(“c:arquivo.txt”)
writer.WriteLine(“Teste.”)
writer.Close()

Dim reader As StreamReader = File.OpenText(“c:arquivo.txt”)
Dim line As String = reader.ReadLine()
While Not line Is Nothing
Console.WriteLine(line)
line = reader.ReadLine()
End While
reader.Close()

Dim str As String = “Texto data”
Dim num As Integer = 123
Dim binWriter As New BinaryWriter (File.OpenWrite(“c:arquivo.dat”))
binWriter.Write(str)
binWriter.Write(num)
binWriter.Close()

Dim binReader As New BinaryReader (File.OpenRead(“c:arquivo.dat”))
str = binReader.ReadString()
num = binReader.ReadInt32()
binReader.Close()

using System.IO;

StreamWriter writer = File.CreateText(“c:arquivo.txt”);
writer.WriteLine(“Teste.”);
writer.Close();

StreamReader reader = File.OpenText(“c:arquivo.txt”);
string line = reader.ReadLine();
while (line != null) {
Console.WriteLine(line);
line = reader.ReadLine();
}
reader.Close();

string str = “Texto data”;
int num = 123;
BinaryWriter binWriter = new BinaryWriter(File.OpenWrite(“c:arquivo.dat”));
binWriter.Write(str);
binWriter.Write(num);
binWriter.Close();

BinaryReader binReader = new BinaryReader(File.OpenRead(“c:arquivo.dat”));
str = binReader.ReadString();
num = binReader.ReadInt32();
binReader.Close();

Retirado de Marcoratti.net
Se você está procurando um conversor de código vb.Net para C#, ou vice-versa, tente aqui – Mas saiba que nem sempre eles funcionam muito bem!


// Comente!

comentários

Olá, eu sou a Gabi e eu criei o "Eu Faço Programas" em 2011, quando ainda trabalhava em desenvolvimento web. Atualmente meu trabalho é focado em estratégia digital e redes sociais. Quer saber mais? www.imgabi.com

5 Comentários

// Siga as boas práticas: Comente!