Você está na página 1de 16

Diferencias entre visual basic net y

Visual C #. net.
Sintcticamente. Visual Basic NET y Visual C #. NET son dos lenguajes diferentes, al igual que Visual
Basic, Visual C y Visual C + + son diferentes lenguas. Visual C #. NET arece ms familiar ara Visual
C, Visual C + +, y los rogramadores de !a"a, y Visual Basic. NET arece ms familiar ara los
desarrolladores de Visual Basic. #as mayores diferencias entre las lenguas se di"iden en las siguientes
categor$as%
&ay'sculas y min'sculas
(eclaraci)n de "aria*les y asignaci)n
#os tios de datos
Terminaci)n de sentencia
Bloques de instrucciones
El uso de +, frente a -.
/eradores
Sentencias condicionales
El manejo de errores
Comro*aci)n de des*ordamiento
El aso de armetros
Enlace tard$o
&anejo de c)digo no administrado
0ala*ras cla"e
Case sensitive
Nom*res de los identificadores en Visual Basic. No distinguen entre may'sculas y min'sculas, ero los
nom*res de identificador en Visual C #. NET son. Esto resenta un ro*lema rincialmente al escri*ir
el c)digo, y no es un ro*lema en la deuraci)n de un rograma que ya se comila.
(eclaraci)n y 1signaci)n Varia*le
Varia*les en Visual Basic. Se declaran con la "aria*le antes de que el tio de datos. En C #. NET
Visual, el tio de datos recede a las "aria*les.
Visual Basic .NET Visual C# .NET
Dim i, j As Integer int i, j;
Dim i As Integer = 7 int i = 7;
Dim i(6) As Integer
or
Dim i() As Integer = New Integer(6) {}
int[] i = new int[6];
Dim con As Sqlonnection Sqlonnection con;
Dim ! As New "(#A$#) " ! = new "(#A$#);
or
Dim ! As " = New "(#A$#)
Tipos de datos
#os tios de datos simles tienen diferentes nom*res en Visual Basic. NET y Visual C #. NET. 0or
ejemlo, 2nteger en Visual Basic. NET es int en Visual C #. NET. Sin em*argo, System.2nt34, el. Tio
*ase NET 5rame6or7 ara que enteros y int son alias, se uede utili8ar en los dos idiomas. Visual C #.
NET tam*i9n aoya el *yte con signo, unsigned s:ort, int sin firmar, y los tios de datos largos sin
signo, que no estn disoni*les en Visual Basic. NET.
En la siguiente ta*la se muestran los diferentes nom*res de tio de datos en cada lengua y de los tios
de *ase de los que son alias.
Visual Basic .NET Visual C# .NET .NET Framework
Boolean bool System.Boolean
Byte byte System.Byte
Short short System.Int16
Integer int System.Int32
Long long System.Int64
Single float System.Single
Double double System.Double
Decimal decimal System.Decimal
Date System.DateTime System.DateTime
String string System.String
Char char System.Char
b!ect ob!ect System.b!ect
n/a sbyte System.Sbyte
n/a ushort System."Int16
n/a uint System."Int32
n/a ulong System."Int64
Terminacin de sentencia
#as declaraciones en Visual Basic. Terminan con el final de la l$nea. 0uede usar los dos untos +%, ara
oner m'ltiles sentencias en una l$nea, y usted uede utili8ar la continuaci)n de l$nea +;, carcter ara
:acer un er$odo de declaraci)n "arias l$neas.
2nstrucciones en Visual C #. NET se terminan con el unto y coma +<,. 0uede utili8ar "arias
declaraciones or l$nea, y las declaraciones uede a*arcar "arias l$neas.
Visual Basic .NET Visual C# .NET
A = %
$ = 7 & = '
()S*+ (Arg,, -
Arg., -
Arg/)
A = %;
$ = 7; = ';
()S*+ (Arg,,
Arg.,
Arg/);

Bloques de instrucciones
. Visual Basic NET no utili8a *loques de sentencias ar*itrarias. En cam*io, ciertas ala*ras cla"e que
tiene un declaraci)n de terminaci)n eseciali8ada se utili8an en lugar de los *loques de instrucciones.
. En Visual C #, lla"es +=>, se utili8an ara delimitar un *loque de instrucciones< de lo contrario, se
suone que una sola sentencia.
Visual Basic .NET Visual C# .NET
I0 A = % 12en
DoSomet2ing()
DoSomet2ingAg3in()
4n5 I0
I0 (3 == %)
{
DoSomet2ing();
DoSomet2ingAg3in();
}
or
i0 (3 == %)
DoSomet2ing();
DoSomet2ingAg3in(); 6612is is not
73rt o0

66t2e i0 st3tement8
El uso de () frente a !
Visual Basic. NET utili8a ar9ntesis +, ara delimitar elementos de matri8, argumentos de la funci)n, y
los $ndices de roiedad.
Visual C #. NET utili8a ar9ntesis +, ara delimitar los argumentos de funci)n, y entre corc:etes +-.,
ara delimitar elementos de la matri8 y los $ndices de roiedad.
Purpose Visual Basic .NET Visual C# .NET
Declare an array
Dim 3() As 9ong
Dim 3(/, %) 3s Integer
int[] ! = new int[%];
Initialize an array
Dim 3() As 9ong = {/, :,
%}
int[] ! = new int[%] {,,
., /, :, %};
Reallocate array
;e5im n63
Functions Arguments
<= A(%)
()S*+ (A, $, )
()S*+(A, $, );
Property Indexes
" = ()D3t3Set813+les-
(#A*t2or#)8;ows(%)8-
ol*mns(#A*t2orID#)
" =
()D3t3Set813+les[#A*t2or
#]8;ows[%]8ol*mns[#A*t2
orID#]
"peradores
#os oeradores que se utili8an en Visual Basic. NET y Visual C #. NET son muy diferentes. En la
siguiente ta*la se muestran los oeradores rinciales.
Operator Visual Basic .NET Visual C# .NET
#dditi$e

Addition
= =
Subtraction
> >
Operator Visual Basic .NET Visual C# .NET
%ulti&licati$e

Multiplication
? ?
Division
6 6
Integer division
@ 6

(5e7en5ing on t2e o7er3n5s)
Modulus (division
returning only te
remainder!
(o5 A
"xponentiation
B n63
#ssignment

Assignment
=
== >= ?= 6?
=
== >= ?= 6?
Integer division
@=

6=

(5e7en5ing on t2e o7er3n5s)
#oncatenate
C= ==
Modulus
n63 A=
$e%t si%t
n63 DD=
Rigt si%t
n63 EE=
&it'ise A(D
n63 C=
)*R
n63 B=
*R
n63 F=
'elational and
e)uality

$ess tan
D D
$ess tan or e+ual to
D= D=
,reater tan
E E
,reater tan or e+ual to
E= E=
"+ual
= ==
(ot e+ual
DE G=
#ompare t'o ob-ect
re%erence variables
Is ==
#ompare ob-ect
re%erence type
1)7eH0 ! Is l3ss, ! is l3ss,
#ompare strings
= == or String84q*3ls()
#oncatenate strings
C =
Operator Visual Basic .NET Visual C# .NET
Sortcircuited &oolean
A(D
An5Also CC
Sortcircuited &oolean
*R
Hr4lse FF
Shift

$e%t si%t
n63 DD
Rigt si%t
n63 EE
Sco&e resolution

Scope resolution
8 8, +3se
*ostfi+

.ype cast
int, D+l, I, 1)7e (t)7e)
Member selection
8 8
Post%ix increment
n63 ==
Post%ix decrement
n63 >>
"nary

Indirection
n63 ? (*ns30e mo5e onl))
Address o%
A55ressH0 C (*ns30e mo5e onl))
$ogical (*.
Not G
*ne/s complement
Not J
Pre%ix increment
n63 ==
Pre%ix decrement
n63 >>
Size o% type
n63 siKeo0
Bit,ise

&it'ise (*.
Not J
&it'ise A(D
An5 C
&it'ise )*R
<or B
&it'ise *R
Hr F
Logical

$ogical A(D0 *R
An5 CC
$ogical *R
Hr FF
Conditional

#onditional
II0 L&
Operator Visual Basic .NET Visual C# .NET
*ointer to member

Pointer to member
n63 8 (Mns30e mo5e onl))
#entencias condicionales
#a siguiente ta*la muestra las diferencias en las declaraciones condicionales que. NET Visual Basic y
Visual C #. NET ?SE.
Conditional Statement Visual Basic .NET Visual C# .NET
Decision structure
(selection!
Select 3se I, 3se, 3se
4lse, 4n5 Select
switc2, c3se, 5e03*lt,
Decision structure (i% 1
ten!
I0 I 12en, 4lseI0 I 12en,
4lse, 4n5 I0
i0, else
$oop structure
(conditional!
N2ileI 4n5 N2ile, Do
[N2ile, Mntil] I, 9oo7
[N2ile, Mntil]
5o, w2ile, contin*e
$oop structure
(iteration!
Oor I, [4!it Oor,] Ne!t
Oor 43c2 I, [4!it Oor,]
Ne!t
0or, 0ore3c2
#ontrol %lo' statement
4!it, Po1o, Sto7, 4n5,
;et*rn,
+re3Q, contin*e, goto,
ret*rn,
t2row
Control de errores
&anejo de errores no estructurado es ara la comati*ilidad con "ersiones anteriores. Visual Basic.
NET admite tanto estructurados y manejo de errores no estructurado, ero Visual C #. NET s)lo admite
el control de errores estructurado.
Purpose Visual Basic .NET Visual C# .NET
Structured error
andling
1r)
I
3tc2
I
Oin3ll)
I
4n5 1r)
tr), c3tc2, 0in3ll),
t2row
2nstructured error
andling
Hn 4rror Po1o I
Hn 4rror ;es*me Ne!t
n63

Comprobacin de desbordamiento
Visual Basic. NET tiene un ajuste de ni"el de royecto ara "erificar si :ay des*ordamiento. Sin
em*argo, la comro*aci)n s)lo se uede acti"ar y desacti"ar a ni"el de royecto, en lugar de en el
ni"el de una e@resi)n o un *loque de c)digo. 0ara acti"ar comro*aci)n de des*ordamiento y se
aaga, siga estos asos%
En el men' royecto, :aga clic en 0roiedades.
En 0roiedades de configuraci)n, seleccione otimi8aciones y, a continuaci)n, seleccione las
comro*aciones de des*ordamiento de enteros Auitar claras.
Visual C #. NET declaraciones ueden ejecutar en un c:equeo o un conte@to sin marcar. En un conte@to
marcado, des*ordamiento aritm9tico genera un error de e@ceci)n. En un conte@to sin control,
des*ordamiento aritm9tico se ignora y el resultado se trunca. Esto se uede utili8ar en una e@resi)n o
un *loque de c)digo.
0aso de armetros
Visual Basic. NET utili8a ByVal ara asar armetros or "alor, y utili8a ByBef ara asar armetros
or referencia. . Visual Basic NET tam*i9n uede o*ligar a los armetros que se asa or "alor,
indeendientemente de la forma en que se declaran, encerrando los armetros en ar9ntesis
adicionales. . Visual Basic NET tam*i9n admite armetros ocionales, que no estn disoni*les en
Visual C #. NET.
Visual C #. NET no tiene una manera de asar tios de referencia +o*jetos, estrictamente or "alor.
0uede asar la referencia +*sicamente un untero, o una referencia a la referencia +un untero a un
untero,. No administrado de Visual C #. NET lo ueden tomar los unteros al igual que los m9todos
de Visual C + +. 0ara asar un armetro or referencia, Visual C #. NET utili8a la ala*ra cla"e ref.
0ara utili8ar un armetro ref, el argumento de forma e@l$cita se de*e asar al m9todo como un
argumento ref. El "alor de un argumento ref se asa al armetro ref.
Purpose Visual Basic .NET Visual C# .NET
Pass by value
R*+lic S*+ A$ ($)S3l )
As 9ong)
I
4n5 S*+
A$(!)
A$((!))
Toi5 A$(int !)
{
888
}
A$(i);
Pass by re%erence
R*+lic S*+ A$($);e0 ) As
9ong)
I
4n5 S*+
A$(!)
Toi5 A$(re0 int !)
{
888
}
A$(re0 i);
*ptional parameter Supported n/a

$ate Bindin%
Tanto *sico. NET Visual y Visual C #. NET uede imlementar iml$cita enlace tard$o a tra"9s de la
refle@i)n. Sin em*argo, imlementar el enlace en Visual Basic. NET es muc:o ms fcil que en Visual
C #. NET.
En Visual Basic. NET, al igual que en Visual Basic C.D, el comilador de Visual Basic llama a un
m9todo de ayuda detrs de las escenas que utili8a la refle@i)n ara o*tener el tio de o*jeto. #os
argumentos que se asan al m9todo de ayuda :acen que el m9todo aroiado ara ser llamado en
tiemo de ejecuci)n. Estos argumentos son el o*jeto so*re el que in"oque el m9todo, el nom*re del
m9todo in"ocado que es una cadena, y los argumentos que se asan al m9todo in"ocado que es una
matri8 de o*jetos. 1dems, se uede imlementar el enlace en tiemo e@l$citamente en el c)digo a
tra"9s de la refle@i)n.

2morts System
&)dulo Eola
Su* &ain +,
FEsta*lecer "aria*le.
(im :ello/*j 1s /*ject
FCrear el o*jeto.
:ello/*j G ne6 EelloHorld +,
I2n"ocar el m9todo de imresi)n como si fuera en tiemo de comilaci)n
I1 esar de que es muy tarde atado.
:ello/*j.0rintEello +IVisual Basic #ate BoundI,
End Su*
End &odule

En Visual C #. NET, es ms dif$cil que en Visual Basic. 2mlementar el enlace en tiemo. En lugar de
tener el comilador imlementa el enlace, de*e imlementar de forma e@l$cita el enlace en el c)digo
mediante el uso de la refle@i)n.
Entrega c)digo no administrado
Visual C #. NET 0ermite escri*ir c)digo no administrado. En el c)digo no administrado, se ueden
:acer cosas tales como declarar y oerar so*re los unteros, reali8ar con"ersiones entre unteros y tios
integrales, y tomar la direcci)n de las "aria*les. En cierto sentido, la escritura de c)digo no
administrado es muy similar a la escritura de c)digo de Visual C en un rograma NET Visual C #..
(ado que el c)digo que se escri*e mediante el uso de un conte@to no administrado no se uede
"erificar que es seguro, que s)lo se ejecuta cuando el c)digo es de lena confian8a. No utilice conte@to
no administrado ara tratar de escri*ir c)digo de Visual C en Visual C #. NET. El c)digo no
administrado de*e estar claramente marcado con el modificador unsafe ara que los desarrolladores no
ueden utili8ar las funciones no administradas or accidente, y el motor de ejecuci)n de o*ras ara
asegurarse de que el c)digo no administrado no se uede ejecutar en un entorno que no sea de
confian8a. El alcance de la conte@to no administrado se e@tiende desde la lista de armetros ara el
final de la funci)n, or lo unteros tam*i9n se uede utili8ar en la lista de armetros.
En Visual Basic., No se uede escri*ir c)digo no administrado.
0ala*ras cla"e
#a siguiente ta*la muestra las ala*ras cla"e que. NET Visual Basic y Visual C #. Net use en "arias
categor$as. Esta informaci)n tam*i9n se uede encontrar en la. (ocumentaci)n en l$nea NET Visual
Studio.
Purpose Visual Basic .NET Visual C# .NET
b!ect riented
*rogramming
Indicates a class
constructor
R*+lic l3ss l3ss,
R*+lic S*+ New(88)
()$3se8New
I
4n5 S*+
I
4n5 l3ss
(ote3 4ou ave to call
te base class
constructor explicitly in
5isual &asic 6(".6
7*+lic cl3ss l3ss,
{
7*+lic l3ss,(88)
{
I
}
I8
}
(ote3 .e call to te
base class constructor
(base(!! is generated
automatically by te
compiler in 5isual
#7 6(". i% you do not
include constructor
initializers.
Indicates a class
destructor
(ote3 .e Destructor
or -inali.e metod is
called by garbage
collection6
Rrotecte5 HTerri5es S*+
Oin3liKe()
m-P35get = Not2ing
m-Pe3r = Not2ing
()$3se8Oin3liKe()
4n5 S*+
7*+lic cl3ss l3ss,
{
7*+lic Jl3ss,()
{
I8
}
}
Declares a class
l3ss cl3ss
Purpose Visual Basic .NET Visual C# .NET
Indicates class
ineritance
R*+lic l3ss A
In2erits $
I
4n5 l3ss
7*+lic cl3ss A & $
{
I
}
Indicates tat te class
can only be inerited
and cannot be
instantiated
(*stIn2erit 3+str3ct
Indicates tat te class
cannot be inerited
NotIn2erit3+le se3le5
#alls your o'n
implementation o% te
metod instead o% an
overridden metod in
te derived class
()l3ss None
Re%ers to a base class
%rom te derived class
()$3se +3se
Declares a type8sa%e
re%erence to a class
metod
Deleg3te 5eleg3te
Indicates tat te
metod or te property
overrides te
implementation in its
base class
HTerri5es oTerri5e
Indicates tat tese
metods ave no
implementation and
must be implemented in
derived classes
(*stHTerri5e
(in (*stIn2erit
cl3ss)
3+str3ct
(in 3+str3ct
cl3ss)
Indicates tat te
metod or te property
cannot be overridden in
derived classes
NotHTerri53+le
(ote3 &y de%ault0 metods are
not overridable6
se3le5
Indicates tat te
metod or te property
can be overridden in an
ineriting class
HTerri53+le Tirt*3l
*verloads a procedure0
a %unction0 or a metod
HTerlo35s None8 De0ine 0*nctions
wit2 s3me n3me +*t
5i00erent sign3t*res8
Purpose Visual Basic .NET Visual C# .NET
Speci%ies tat a variable
can contain an ob-ect
'ose events you 'ant
to andle
Nit24Tents No s7eci0ic Qe)wor5
Speci%ies te events %or
'ic an event
procedure 'ill be called
U3n5les (4Tent 7roce5*res
c3n still +e 3ssoci3te5
wit2 3 Nit24Tents T3ri3+le
+) n3ming 73ttern8)
n63
"valuates an ob-ect
expression one time to
access multiple
members
Nit2 o+j4!7r
D8mem+erE
D8mem+erE
4n5 Nit2
n63
Re%ers to te current
ob-ect
(e 12is
Declares an enumerated
type
4n*m
I
4n5 4n*m
4n*m
Declares an inter%ace
Inter03ce inter03ce
Implements an inter%ace
Im7lements cl3ss , & I,
Indicates an indexer
De03*lt Rro7ert) 7*+lic string t2is[int
in5e!]
{
get {ret*rn
9ist[in5e!];}
set {9ist[in5e!]=T3l*e;}
}
Class #ccess
%odifiers
Indicates tat te
modi%ier is accessible
outside te pro-ect or
te assembly
R*+lic 7*+lic
Indicates tat te
modi%ier is accessible
inside te assembly only
Orien5 intern3l
Indicates tat te
modi%ier is accessible
only in te pro-ect (%or
nested classes0 in te
enclosing class!
RriT3te 7riT3te
Class %ember #ccess
%odifiers
Purpose Visual Basic .NET Visual C# .NET
Indicates tat te
modi%ier is accessible
outside te class and
te pro-ect
R*+lic 7*+lic
Indicates tat te
modi%ier is accessible
outside te class0 but in
te pro-ect
Orien5 intern3l
Indicates tat te
modi%ier is only
accessible in a class or a
module
RriT3te 7riT3te
Indicates tat te
modi%ier is accessible
only to current and
derived classes
Rrotecte5 7rotecte5
Indicates te union o%
Protected and Friend or
Internal
Rrotecte5 Orien5 7rotecte5 intern3l
Indicates tat te
members are sared
across all instances
S23re5 st3tic
%iscellaneous
Lifetime
Preserves te local
variables %or te
procedure
St3tic n63
ther
#alls te 9indo's API
Decl3re st3tement *se Rl3t0orm InToQe
Indicates a comment
V, ;em 66, 6? ?6 0or miltine
comments,
666 0or <(9 comments
Indicates a constant
onst onst, re35onl)
#reates a ne' ob-ect
New, re3teH+ject new
Declares a %unction or a
metod 'it no return
value
S*+ Toi5
Declares tat an ob-ect
can be modi%ied
asyncronously
n63 Tol3tile
Purpose Visual Basic .NET Visual C# .NET
Declares a variable
RriT3te, R*+lic, Orien5,
Rrotecte5, St3tic, S23re5,
Dim
5ecl3r3tors (Qe)wor5s
incl*5e *ser>5e0ine5 t)7es
3n5 +*ilt>in t)7es)
Declares a variable
explicitly
H7tion 4!7licit None (All T3ri3+les m*st
+e 5ecl3re5 +e0ore *se)
Declares and raises an
event
4Tent, ;3ise4Tent eTent
Declares a structure
Str*ct*re
I
4n5 Str*ct*re
str*ct
De%ines a de%ault
property
De03*lt +) *sing in5e!ers
Declares a null ob-ect
Not2ing n*ll
Declares a namespace
N3mes73ce
I
4n5 N3mes73ce
N3mes73ce
{
I
}
Indicates namespace
usage
Im7orts *sing
Retrieves a caracter
%rom a string
Pet23r O*nction [ ]
Returns te address o% a
%unction
A55ressH0 (Oor cl3ss
mem+ers, t2is o7er3tor
ret*rns 3 re0erence to 3
0*nction in t2e 0orm o0 3
5eleg3te inst3nce)
5eleg3te
.ests %or a null ob-ect
H+j Is Not2ing o+j == n*ll
.ests %or a database null
expression
IsD+N*ll n63
.reads primitives
S)nc9ocQ locQ

Conclusi)n
So*re la *ase de sus referencias ersonales y e@eriencias anteriores, uede utili8ar cualquiera de los
dos lenguajes. NET Visual o Visual C #. NET ara construir soluciones. 1unque e@isten diferencias
entre los dos idiomas, dos lenguajes que utili8an el. NET 5rame6or7 Common #anguage Buntime y
son igualmente oderosos.
Venta&as de C# sobre VB.net
Snippets automticos
El ejemlo ms com'n es el manejo de e@ceciones. En VB, uno escri*e JTryK, y el rograma
automticamente comleta el *loque Jcatc:K. En C#, se uede elegir si usar el sniet del sistema, y si
lo :acemos, nos one el cursor dentro de la declaraci)n del catc: ara decirle qu9 :acer con la
e@ceci)n +qu9 e@ceci)n "amos a manejar, c)mo se "a a llamar,.
Refactoring
En VB, la 'nica oci)n de refactoreo que se "e es Jrenom*rarK una "aria*le o m9todo. En C#, :ay un
men' entero de refactoreo, con renom*rar, e@traer m9todo, encasular, interfase, etc. Se ueden *ajar
lugins ara :acer 9sto en VB, ero en C# ya "iene integrado.
Men Eventos en los forms
Cuando diseLamos M?2Ns, C# trae "entajas con el manejo de e"entos. En V*. net, si quisi9ramos
rogamar el e"ento de :acer clic so*re un *ot)n or ejemlo, la forma ms rida es :acer do*le clic
so*re el *ot)n, y nos lle"a a c)digo, con el e"ento%
0ri"ate Su* ButtonO;Clic7+ByVal sender 1s System./*ject,
ByVal e 1s System.E"ent1rgs, Eandles ButtonO.Clic7
&sgBo@+I1retaste el *ot)nI,
End Su*
En c#, los controles tienen un nue"o men' en las roiedades, que controla cada osi*le e"ento del
contol. Eaciendo do*le clic en cualquiera de ellos, nos lle"a a c)digo, y nos escri*e el e"ento. Aueda
entonces or ejemlo%
ri"ate "oid ButtonO;Clic7+o*ject sender, E"ent1rgs e,=
&essageBo@.S:o6+I1retaste el *ot)nI,<
>
0ero en este mismo men', "emos todos los e"entos osi*les, a diferencia de Visual, que tenemos que
*uscar en dos com*o*o@ dentro de la edici)n de c)digo el control en el rimero, y el e"ento en el
segundo.

Você também pode gostar