C# and VB
C# and VB
Comments
VB.NET
' S i n g l el i n eo n l y R e mS i n g l el i n eo n l y
C#
/ /S i n g l el i n e / *M u l t i p l e l i n e* / / / /X M Lc o m m e n t so ns i n g l el i n e / * *X M Lc o m m e n t so nm u l t i p l el i n e s* /
Program Structure
VB.NET
I m p o r t sS y s t e m N a m e s p a c eM y N a m e S p a c e C l a s sH e l l o W o r l d ' E n t r yp o i n tw h i c hd e l e g a t e st oC s t y l em a i nP r i v a t e F u n c t i o n P u b l i cO v e r l o a d sS h a r e dS u bM a i n ( ) M a i n ( S y s t e m . E n v i r o n m e n t . G e t C o m m a n d L i n e A r g s ( ) ) E n dS u b O v e r l o a d sS h a r e dS u bM a i n ( a r g s ( )A sS t r i n g ) S y s t e m . C o n s o l e . W r i t e L i n e ( " H e l l oW o r l d " ) E n dS u b' M a i n E n dC l a s s' H e l l o W o r l dE n dN a m e s p a c e' M y N a m e S p a c e
C#
u s i n gS y s t e m N a m e s p a c eM y N a m e S p a c e { c l a s sH e l l o W o r l d { s t a t i cv o i dM a i n ( s t r i n g [ ]a r g s ) { S y s t e m . C o n s o l e . W r i t e L i n e ( " H e l l oW o r l d " ) } } }
Data Types
VB.NET
' V a l u eT y p e s B o o l e a n B y t e C h a r( e x a m p l e :" A " ) S h o r t ,I n t e g e r ,L o n g S i n g l e ,D o u b l e D e c i m a l D a t e
C#
/ / V a l u eT y p e s b o o l b y t e ,s b y t e c h a r( e x a m p l e :' A ' ) s h o r t ,u s h o r t ,i n t ,u i n t ,l o n g ,u l o n g f l o a t ,d o u b l e d e c i m a l D a t e T i m e
' R e f e r e n c eT y p e s O b j e c t S t r i n g
/ / R e f e r e n c eT y p e s o b j e c t s t r i n g
D i mxA sI n t e g e r S y s t e m . C o n s o l e . W r i t e L i n e ( x . G e t T y p e ( ) ) S y s t e m . C o n s o l e . W r i t e L i n e ( T y p e N a m e ( x ) )
i n tx ; C o n s o l e . W r i t e L i n e ( x . G e t T y p e ( ) ) C o n s o l e . W r i t e L i n e ( t y p e o f ( i n t ) )
/ / T y p ec o n v e r s i o n f l o a td=3 . 5 ; i n ti=( i n t )d
http://aspalliance.com/625
1/12
2014/4/3
i=C I n t( d ) i=I n t ( d )
Constants
VB.NET
C o n s tM A X _ A U T H O R SA sI n t e g e r=2 5 R e a d O n l yM I N _ R A N KA sS i n g l e=5 . 0 0
C#
c o n s ti n tM A X _ A U T H O R S=2 5 ; r e a d o n l yf l o a tM I N _ R A N K I N G=5 . 0 0 ;
Enumerations
VB.NET
E n u mA c t i o n S t a r t ' S t o pi sar e s e r v e dw o r d [ S t o p ] R e w i n d F o r w a r d E n dE n u m E n u mS t a t u s F l u n k=5 0 P a s s=7 0 E x c e l=9 0 E n dE n u m D i maA sA c t i o n=A c t i o n . S t o p I fa< >A c t i o n . S t a r tT h e n_ ' P r i n t s" S t o pi s1 " S y s t e m . C o n s o l e . W r i t e L i n e ( a . T o S t r i n g&"i s"&a ) ' P r i n t s7 0 S y s t e m . C o n s o l e . W r i t e L i n e ( S t a t u s . P a s s ) ' P r i n t sP a s s S y s t e m . C o n s o l e . W r i t e L i n e ( S t a t u s . P a s s . T o S t r i n g ( ) ) A c t i o na=A c t i o n . S t o p ; i f( a! =A c t i o n . S t a r t ) / / P r i n t s" S t o pi s1 " S y s t e m . C o n s o l e . W r i t e L i n e ( a+"i s"+ ( i n t )a ) ; / /P r i n t s7 0 S y s t e m . C o n s o l e . W r i t e L i n e ( ( i n t )S t a t u s . P a s s ) ; / /P r i n t sP a s s S y s t e m . C o n s o l e . W r i t e L i n e ( S t a t u s . P a s s ) ;
C#
e n u mA c t i o n{ S t a r t ,S t o p ,R e w i n d ,F o r w a r d } ; e n u mS t a t u s{ F l u n k=5 0 ,P a s s=7 0 ,E x c e l= 9 0 } ;
E n u mW e e k d a y s S a t u r d a y S u n d a y M o n d a y T u e s d a y W e d n e s d a y T h u r s d a y F r i d a y E n dE n u m' W e e k d a y s
e n u mW e e k d a y s { S a t u r d a y ,S u n d a y ,M o n d a y ,T u e s d a y ,W e d n e s d a y , T h u r s d a y ,F r i d a y }
http://aspalliance.com/625
2/12
2014/4/3
Operators
VB.NET
' C o m p a r i s o n = < > < = > = < >
C#
/ / C o m p a r i s o n = = < > < = > = ! =
' A r i t h m e t i c + - * / M o d \ ( i n t e g e rd i v i s i o n ) ^ ( r a i s et oap o w e r )
/ / A r i t h m e t i c + - * / % ( m o d ) / ( i n t e g e rd i v i s i o ni fb o t ho p e r a n d sa r ei n t s ) M a t h . P o w ( x ,y )
/ / A s s i g n m e n t = + = = * = / =
' L o g i c a l A n d A n d A l s o O r O r E l s e N o t
/ / L o g i c a l & & | | !
' S t r i n gC o n c a t e n a t i o n &
/ / S t r i n gC o n c a t e n a t i o n +
Choices
VB.NET
g r e e t i n g=I I f ( a g e<2 0 ," W h a t ' su p ? " ," H e l l o " )
C#
g r e e t i n g=a g e<2 0?" W h a t ' su p ? ": " H e l l o " ;
' O n el i n ed o e s n ' tr e q u i r e" E n dI f " ,n o" E l s e " I fl a n g u a g e=" V B . N E T "T h e nl a n g T y p e=" v e r b o s e "
http://aspalliance.com/625
i f( x! =1 0 0& &y<5 )
3/12
2014/4/3
I fx< >1 0 0A n dy<5T h e n x* =5 y* =2 E n dI f
' M u s tb eap r i m i t i v ed a t at y p e S e l e c tC a s ec o l o r C a s e" b l a c k " ," r e d " r+ =1 C a s e" b l u e " b+ =1 C a s e" g r e e n " g+ =1 C a s eE l s e o t h e r+ =1 E n dS e l e c t
Loops
VB.NET
' P r e t e s tL o o p s : W h i l ec<1 0 c+ =1 E n dW h i l eD oU n t i lc=1 0 c+ =1 L o o p
C#
/ / P r e t e s tL o o p s :w h i l e( i<1 0 ) i + + ; f o r( i=2 ;i<=1 0 ;i+ =2 ) S y s t e m . C o n s o l e . W r i t e L i n e ( i ) ;
' P o s t t e s tL o o p : D oW h i l ec<1 0 c+ =1 L o o p
/ / P o s t t e s tL o o p : d o i + + ; w h i l e( i<1 0 ) ;
F o rc=2T o1 0S t e p2 S y s t e m . C o n s o l e . W r i t e L i n e ( c ) N e x t
http://aspalliance.com/625
4/12
2014/4/3
Arrays
VB.NET
D i mn u m s ( )A sI n t e g e r={ 1 ,2 ,3 } F o riA sI n t e g e r=0T on u m s . L e n g t h-1 C o n s o l e . W r i t e L i n e ( n u m s ( i ) ) N e x t ' 4i st h ei n d e xo ft h el a s te l e m e n t ,s oi th o l d s5e l e m e n t s D i mn a m e s ( 4 )A sS t r i n g n a m e s ( 0 )=" S t e v e n " ' T h r o w sS y s t e m . I n d e x O u t O f R a n g e E x c e p t i o n n a m e s ( 5 )=" S a r a h "
C#
i n t [ ]n u m s={ 1 ,2 ,3 } ; f o r( i n ti=0 ;i<n u m s . L e n g t h ;i + + ) C o n s o l e . W r i t e L i n e ( n u m s [ i ] ) ;
' R e s i z et h ea r r a y ,k e e p i n gt h ee x i s t i n g ' v a l u e s( P r e s e r v ei so p t i o n a l ) R e D i mP r e s e r v en a m e s ( 6 )
/ /C #c a n ' td y n a m i c a l l yr e s i z ea na r r a y . / / J u s tc o p yi n t on e wa r r a y . s t r i n g [ ]n a m e s 2=n e ws t r i n g [ 7 ] ; / /o rn a m e s . C o p y T o ( n a m e s 2 ,0 ) ; A r r a y . C o p y ( n a m e s ,n a m e s 2 ,n a m e s . L e n g t h ) ;
D i mt w o D ( r o w s 1 ,c o l s 1 )A sS i n g l e t w o D ( 2 ,0 )=4 . 5
f l o a t [ , ]t w o D=n e wf l o a t [ r o w s ,c o l s ] ; t w o D [ 2 , 0 ]=4 . 5 ;
D i mj a g g e d ( ) ( )A sI n t e g e r={_ N e wI n t e g e r ( 4 ){ } ,N e wI n t e g e r ( 1 ){ } ,N e w I n t e g e r ( 2 ){ }} j a g g e d ( 0 ) ( 4 )=5
i n t [ ] [ ]j a g g e d=n e wi n t [ 3 ] [ ]{ n e wi n t [ 5 ] ,n e wi n t [ 2 ] ,n e wi n t [ 3 ]} ; j a g g e d [ 0 ] [ 4 ]=5 ;
http://aspalliance.com/625
5/12
2014/4/3
Functions
VB.NET
' P a s sb yv a l u e( i n ,d e f a u l t ) ,r e f e r e n c e ' ( i n / o u t ) ,a n dr e f e r e n c e( o u t ) S u bT e s t F u n c ( B y V a lxA sI n t e g e r ,B y R e fyA s I n t e g e r , B y R e fzA sI n t e g e r ) x+ =1 y+ =1 z=5 E n dS u b
C#
/ /P a s sb yv a l u e( i n ,d e f a u l t ) ,r e f e r e n c e / / ( i n / o u t ) ,a n dr e f e r e n c e( o u t ) v o i dT e s t F u n c ( i n tx ,r e fi n ty ,o u ti n tz ){ x + + ; y + + ; z=5 ; }
' cs e tt oz e r ob yd e f a u l t D i ma=1 ,b=1 ,cA sI n t e g e r T e s t F u n c ( a ,b ,c ) S y s t e m . C o n s o l e . W r i t e L i n e ( " { 0 }{ 1 }{ 2 } " ,a ,b ,c )' 125 i n ta=1 ,b=1 ,c ;/ /cd o e s n ' tn e e di n i t i a l i z i n g T e s t F u n c ( a ,r e fb ,o u tc ) ; S y s t e m . C o n s o l e . W r i t e L i n e ( " { 0 }{ 1 }{ 2 } " ,a ,b ,c ) ;/ / 125
/ /A c c e p tv a r i a b l en u m b e ro fa r g u m e n t s i n tS u m ( p a r a m si n t [ ]n u m s ){ i n ts u m=0 ; f o r e a c h( i n tii nn u m s ) s u m+ =i ; r e t u r ns u m ; }
Exception Handling
VB.NET
C l a s sW i t h f i n a l l y P u b l i cS h a r e dS u bM a i n ( ) T r y D i mxA sI n t e g e r=5 D i myA sI n t e g e r=0 D i mzA sI n t e g e r=x/y C o n s o l e . W r i t e L i n e ( z ) C a t c heA sD i v i d e B y Z e r o E x c e p t i o n S y s t e m . C o n s o l e . W r i t e L i n e ( " E r r o ro c c u r r e d " ) F i n a l l y S y s t e m . C o n s o l e . W r i t e L i n e ( " T h a n ky o u " ) E n dT r y E n dS u b' M a i n E n dC l a s s' W i t h f i n a l l y
C#
c l a s s W i t h f i n a l l y { p u b l i cs t a t i cv o i dM a i n ( ) { t r y { i n tx=5 ; i n ty=0 ; i n tz=x / y ; C o n s o l e . W r i t e L i n e ( z ) ; } c a t c h ( D i v i d e B y Z e r o E x c e p t i o ne ) { S y s t e m . C o n s o l e . W r i t e L i n e ( " E r r o ro c c u r r e d " ) ; } f i n a l l y { S y s t e m . C o n s o l e . W r i t e L i n e ( " T h a n ky o u " ) ;
http://aspalliance.com/625
6/12
2014/4/3
S y s t e m . C o n s o l e . W r i t e L i n e ( " T h a n ky o u " ) ;
Namespaces
VB.NET
N a m e s p a c eA S P A l l i a n c e . D o t N e t . C o m m u n i t y . . . E n dN a m e s p a c e
C#
n a m e s p a c eA S P A l l i a n c e . D o t N e t . C o m m u n i t y{ . . . }
' o r
/ /o r
N a m e s p a c eA S P A l l i a n c e N a m e s p a c eD o t N e t N a m e s p a c eC o m m u n i t y . . . E n dN a m e s p a c e E n dN a m e s p a c e E n dN a m e s p a c e
n a m e s p a c eA S P A l l i a n c e{ n a m e s p a c eD o t N e t{ n a m e s p a c eC o m m u n i t y{ . . . } } }
I m p o r t sA S P A l l i a n c e . D o t N e t . C o m m u n i t y
u s i n gA S P A l l i a n c e . D o t N e t . C o m m u n i t y ;
Classes / Interfaces
VB.NET
' A c c e s s i b i l i t yk e y w o r d s P u b l i c P r i v a t e F r i e n d P r o t e c t e d P r o t e c t e dF r i e n d S h a r e d
C#
/ / A c c e s s i b i l i t yk e y w o r d s p u b l i c p r i v a t e i n t e r n a l p r o t e c t e d p r o t e c t e di n t e r n a l s t a t i c
' I n h e r i t a n c e C l a s sA r t i c l e s I n h e r i t sA u t h o r s . . . E n dC l a s s
/ / I n h e r i t a n c e c l a s sA r t i c l e s :A u t h o r s{ . . . }
u s i n gS y s t e m ; I m p o r t sS y s t e m i n t e r f a c eI A r t i c l e { v o i dS h o w ( ) ; }
I n t e r f a c eI A r t i c l e S u bS h o w ( ) E n dI n t e r f a c e' I A r t i c l e _
c l a s sI A u t h o r : I A r t i c l e { p u b l i cv o i dS h o w ( ) { S y s t e m . C o n s o l e . W r i t e L i n e ( " S h o w ( )m e t h o d I m p l e m e n t e d " ) ; }
p u b l i cs t a t i cv o i dM a i n ( s t r i n g [ ]a r g s ) { I A u t h o ra u t h o r=n e wI A u t h o r ( ) ; a u t h o r . S h o w ( ) ; } }
http://aspalliance.com/625
O v e r l o a d sP u b l i cS h a r e dS u bM a i n ( a r g s ( )A s S t r i n g ) D i ma u t h o rA sN e wI A u t h o r ( ) a u t h o r . S h o w ( ) E n dS u b' M a i n
7/12
2014/4/3
E n dS u b' M a i n E n dC l a s s' I A u t h o r
Constructors / Destructors
VB.NET
C l a s sT o p A u t h o r P r i v a t e_ t o p A u t h o rA sI n t e g e r P u b l i cS u bN e w ( ) _ t o p A u t h o r=0 E n dS u b P u b l i cS u bN e w ( B y V a lt o p A u t h o rA sI n t e g e r ) M e . _ t o p A u t h o r=t o p A u t h o r E n dS u b P r o t e c t e dO v e r r i d e sS u bF i n a l i z e ( ) ' D e s c t r u c t o rc o d et of r e eu n m a n a g e dr e s o u r c e s M y B a s e . F i n a l i z e ( ) E n dS u b E n dC l a s s
C#
c l a s sT o p A u t h o r{ p r i v a t ei n t_ t o p A u t h o r ; p u b l i cT o p A u t h o r ( ){ _ t o p A u t h o r=0 ; } p u b l i cT o p A u t h o r ( i n tt o p A u t h o r ){ t h i s . _ t o p A u t h o r =t o p A u t h o r } ~ T o p A u t h o r ( ){ / /D e s t r u c t o rc o d et of r e eu n m a n a g e dr e s o u r c e s . / /I m p l i c i t l yc r e a t e saF i n a l i z em e t h o d } }
Objects
VB.NET
D i ma u t h o rA sT o p A u t h o r=N e wT o p A u t h o r W i t ha u t h o r . N a m e=" S t e v e n " . A u t h o r R a n k i n g=3 E n dW i t h a u t h o r . R a n k ( " S c o t t " ) a u t h o r . D e m o t e ( )' C a l l i n gS h a r e dm e t h o d ' o r T o p A u t h o r . R a n k ( )
C#
T o p A u t h o ra u t h o r=n e wT o p A u t h o r ( ) ; / / N o" W i t h "c o n s t r u c t a u t h o r . N a m e=" S t e v e n " ; a u t h o r . A u t h o r R a n k i n g=3 ;
a u t h o r . R a n k ( " S c o t t " ) ; T o p A u t h o r . D e m o t e ( )/ / C a l l i n gs t a t i cm e t h o d
Structs
VB.NET
S t r u c t u r eA u t h o r R e c o r d P u b l i cn a m eA sS t r i n g P u b l i cr a n kA sS i n g l e P u b l i cS u bN e w ( B y V a ln a m eA sS t r i n g ,B y V a lr a n k A sS i n g l e ) M e . n a m e=n a m e M e . r a n k=r a n k
C#
s t r u c tA u t h o r R e c o r d{ p u b l i cs t r i n gn a m e ; p u b l i cf l o a tr a n k ; p u b l i cA u t h o r R e c o r d ( s t r i n gn a m e ,f l o a t r a n k ){ t h i s . n a m e=n a m e ; t h i s . r a n k=r a n k ;
http://aspalliance.com/625
8/12
2014/4/3
M e . r a n k=r a n k E n dS u b E n dS t r u c t u r e
Properties
VB.NET
P r i v a t e_ s i z eA sI n t e g e r P u b l i cP r o p e r t yS i z e ( )A sI n t e g e r G e t R e t u r n_ s i z e E n dG e t S e t( B y V a lV a l u eA sI n t e g e r ) I fV a l u e<0T h e n _ s i z e=0 E l s e _ s i z e=V a l u e E n dI f E n dS e t E n dP r o p e r t y
C#
p r i v a t ei n t_ s i z e ; p u b l i ci n tS i z e{ g e t{ r e t u r n_ s i z e ; } s e t{ i f( v a l u e<0 ) _ s i z e=0 ; e l s e _ s i z e=v a l u e ; } }
f o o . S i z e+ =1
f o o . S i z e + + ;
I m p o r t sS y s t e m
C l a s s[ D a t e ] P u b l i cP r o p e r t yD a y ( )A sI n t e g e r G e t R e t u r nd a y E n dG e t S e t d a y=v a l u e E n dS e t
http://aspalliance.com/625
u s i n gS y s t e m ; c l a s sD a t e { p u b l i ci n tD a y { g e t{ r e t u r nd a y ; } s e t{ d a y=v a l u e ; } } i n td a y ;
9/12
2014/4/3
E n dS e t E n dP r o p e r t y P r i v a t ed a yA sI n t e g e r
P u b l i cP r o p e r t yM o n t h ( )A sI n t e g e r G e t R e t u r nm o n t h E n dG e t S e t m o n t h=v a l u e E n dS e t E n dP r o p e r t y P r i v a t em o n t hA sI n t e g e r
p u b l i ci n tM o n t h { g e t{ r e t u r nm o n t h ; } s e t{ m o n t h=v a l u e ; } } i n tm o n t h ;
P u b l i cP r o p e r t yY e a r ( )A sI n t e g e r G e t R e t u r ny e a r E n dG e t S e t y e a r=v a l u e E n dS e t E n dP r o p e r t y P r i v a t ey e a rA sI n t e g e r
p u b l i ci n tY e a r { g e t{ r e t u r ny e a r ; } s e t{ y e a r=v a l u e ; } } i n ty e a r ;
p u b l i cb o o lI s L e a p Y e a r ( i n ty e a r ) { r e t u r ny e a r % 4 = =0?t r u e :f a l s e ; } p u b l i cv o i dS e t D a t e ( i n td a y ,i n t m o n t h ,i n ty e a r ) { t h i s . d a y =d a y ; t h i s . m o n t h=m o n t h ; t h i s . y e a r =y e a r ; } }
Delegates / Events
VB.NET
D e l e g a t eS u bM s g A r r i v e d E v e n t H a n d l e r ( B y V a lm e s s a g e A sS t r i n g )
C#
d e l e g a t ev o i dM s g A r r i v e d E v e n t H a n d l e r ( s t r i n g m e s s a g e ) ;
e v e n tM s g A r r i v e d E v e n t H a n d l e rM s g A r r i v e d E v e n t ; E v e n tM s g A r r i v e d E v e n tA sM s g A r r i v e d E v e n t H a n d l e r / / D e l e g a t e sm u s tb eu s e dw i t he v e n t si nC # ' o rt od e f i n ea ne v e n tw h i c hd e c l a r e sa ' d e l e g a t ei m p l i c i t l y E v e n tM s g A r r i v e d E v e n t ( B y V a lm e s s a g eA sS t r i n g )
u s i n gS y s t e m . W i n d o w s . F o r m s ; I m p o r t sS y s t e m . W i n d o w s . F o r m s B u t t o nM y B u t t o n=n e wB u t t o n ( ) ; M y B u t t o n . C l i c k + =n e w S y s t e m . E v e n t H a n d l e r ( M y B u t t o n _ C l i c k ) ;
http://aspalliance.com/625
10/12
2014/4/3
Console I/O
VB.NET
' S p e c i a lc h a r a c t e rc o n s t a n t s v b C r L f ,v b C r ,v b L f ,v b N e w L i n e v b N u l l S t r i n g v b T a b v b B a c k v b F o r m F e e d v b V e r t i c a l T a b " " C h r ( 6 5 )' R e t u r n s' A '
C#
/ / E s c a p es e q u e n c e s \ n ,\ r \ t \ \ \
C o n v e r t . T o C h a r ( 6 5 )/ / R e t u r n s' A '-e q u i v a l e n tt o C h r ( n u m )i nV B / /o r ( c h a r )6 5
S y s t e m . C o n s o l e . W r i t e ( " W h a t ' sy o u rn a m e ?" ) D i mn a m eA sS t r i n g=S y s t e m . C o n s o l e . R e a d L i n e ( ) S y s t e m . C o n s o l e . W r i t e ( " H o wo l da r ey o u ?" ) D i ma g eA sI n t e g e r=V a l ( S y s t e m . C o n s o l e . R e a d L i n e ( ) ) S y s t e m . C o n s o l e . W r i t e L i n e ( " { 0 }i s{ 1 }y e a r so l d . " ,n a m e ,a g e ) ' o r S y s t e m . C o n s o l e . W r i t e L i n e ( n a m e&"i s"&a g e&"y e a r so l d . " ) D i mcA sI n t e g e r c=S y s t e m . C o n s o l e . R e a d ( )' R e a ds i n g l ec h a r S y s t e m . C o n s o l e . W r i t e L i n e ( c )' P r i n t s6 5i fu s e re n t e r s" A "
S y s t e m . C o n s o l e . W r i t e ( " W h a t ' sy o u rn a m e ?" ) ; s t r i n gn a m e=S Y s t e m . C o n s o l e . R e a d L i n e ( ) ; S y s t e m . C o n s o l e . W r i t e ( " H o wo l da r ey o u ?" ) ; i n ta g e= C o n v e r t . T o I n t 3 2 ( S y s t e m . C o n s o l e . R e a d L i n e ( ) ) ; S y s t e m . C o n s o l e . W r i t e L i n e ( " { 0 }i s{ 1 }y e a r so l d . " , n a m e ,a g e ) ; / / o r S y s t e m . C o n s o l e . W r i t e L i n e ( n a m e+"i s"+ a g e+" y e a r so l d . " ) ;
File I/O
VB.NET
I m p o r t sS y s t e m . I O
C#
u s i n gS y s t e m . I O ;
http://aspalliance.com/625
11/12
2014/4/3
E n dW h i l e r e a d e r . C l o s e ( )
http://aspalliance.com/625
12/12