در این مقاله به بررسی و مقایسه اجمالی ۴ زبان J#.NET ،C++.NET ،VB.NET و C#.NET پرداخته میشود که این مقایسات به کمک مثال بیان میشود. این مقاله برای افرادی که قصد آموختن یکی از این زبانها را دارند بسیار مفید و کارآمد میباشد.

تعریف متغیرها

[VB.NET]
کد:
Dim x As Integer
Public x As Integer = 10
[J#.NET]
کد:
int x;
int x = 10;
[C++.NET]
کد:
int x;
int x = 10;
[C#.NET]
کد:
int x;
int x = 10;
نوشتن توضیحات در برنامه

[VB.NET]
کد:
' comment
x = 1 ' comment
Rem comment
[J#.NET]
کد:
// comment
/* multiline 
comment */
/**
Class Documentation
*/
[C++.NET]
کد:
// comment
/* multiline
comment */
[C#.NET]
کد:
// comment
/* multiline
comment */
انتساب

[VB.NET]
کد:
nVal = 7
[J#.NET]
کد:
nVal = 7;
[C++.NET]
کد:
nVal = 7;
 
[C#.NET]
nVal = 7;
دستورات شرطی

[VB.NET]
کد:
If nCnt <= nMax Then
nTotal += nCnt ' Same as nTotal = nTotal + nCnt.
nCnt += 1 ' Same as nCnt = nCnt + 1.
Else
nTotal += nCnt
nCnt -= 1 
End If
[J#.NET]
کد:
if (nCnt <= nMax){
nTotal += nCnt;
nCnt++;
}
[C++.NET]
کد:
if(nCnt < nMax) {
nTotal += nCnt;
nCnt++;
}
else {
nTotal += nCnt;
nCnt--; 
};
[C#.NET]
کد:
if (nCnt <= nMax)
{
nTotal += nCnt;
nCnt++;
}
else
{
nTotal +=nCnt;
nCnt--;
}
دستورات انتخابی

[VB.NET]
کد:
Select Case n
Case 0
MsgBox ("Zero") 
'VB.NET exits the Select at the end of a Case
Case 1
MsgBox ("One")
Case 2 
MsgBox ("Two")
Case Else
MsgBox ("Default")
End Select
[J#.NET]
کد:
switch(n) {
case 0:
System.out.println("Zero\n");
break;
case 1:
System.out.println("One\n");
break;
default:
System.out.println("?\n");
}
[C++.NET]
کد:
switch(n) {
case 0:
printf("Zero\n");
break;
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
default:
printf("?\n");}
[C#.NET]
کد:
switch(n) 
{
case 0:
Console.WriteLine("Zero");
break;
case 1:
Console.WriteLine("One");
break;
case 2:
Console.WriteLine("Two");
break;
default:
Console.WriteLine("?");
}
حلقه For

[VB.NET]
کد:
For n = 1 To 10 
MsgBox("The number is " & n)
Next
 
For Each prop In obj
prop = 42
Next prop
[J#.NET]
کد:
for(n=1; n<11;n++)
System.out.println("The number is " + n);
[C++.NET]
کد:
for(int n=1; n<11; n++)
printf("%d\n",n);
[C#.NET]
کد:
for (int i = 1; i <= 10; i++) 
Console.WriteLine("The number is {0}", i);
foreach(prop current in obj)
{
current=42;
}
حلقه While

[VB.NET]
کد:
While n < 100 ' Test at start of loop.
n += 1 ' Same as n = n + 1.
End While
[J#.NET]
کد:
while (n < 100)
n++;
[C++.NET]
کد:
while(int n < 100)
n++;
 
[C#.NET]
while (n < 100)
n++;
انتقال پارامترها با مقدار

[VB.NET]
کد:
Public Sub ABC(ByVal y As Long) 
...
End Sub
ABC(x) 
ABC((x))
آرگومان y با مقدارش منتقل ميشود. اگر زيربرنامه ی ABC مقدار y را تغيير دهد اين تغييرات تاثيری بر روی x نخواهد داشت.
شما ميتوانيد پارامترها را مجبور کنيد که با مقدار منتقل شوند بدون توجه به چگونگی تعريف آنها. اين کار را می توانيد با گذاشتن يک جفت پرانتز () ديگر انجام دهيد.

[J#.NET]
اشياء همواره با آدرس و انواع داده ی اوليه هميشه با مقدار منتقل ميشوند.

[C++.NET]
کد:
MyMethod(i,j);
[C#.NET]
توجه کنيد که هيچ راهی برای انتقال انواع مرجع (اشياء) منحصرا از طريق مقدار وجود ندارد.

يک متد تعريف شده:

کد:
void ABC(int x)
{
...
}
و فراخوانی اين متد :

کد:
ABC(i);
انتقال پارامترها با آدرس

[VB.NET]
کد:
Public Sub ABC(ByRef y As Long)
End Sub
 
ABC(x)
پارامتر y به صورت ByRef (با آدرس) شده است. اگر ABC مقدار y را تغيير دهد اين تغييرات روی x نيز صورت ميگيرد.



[J#.NET]
[C++.NET]
پروتوتایپ تابع ABC که شامل اشاره گری به يک عدد است.

کد:
int ABC(long *py);
ABC(&VAR);
پروتوتایپ تابع ABC که شامل ارجاعی به يک عدد است.

کد:
int ABC(long &y);
ABC(VAR);
[C#.NET]
همنچنين توجه داشته باشيد که متد #C ميتواند مانند ++C شامل اشاره گر باشد. برای مثال اين متد:
کد:
void ABC(ref int x)
{
...
}
ABC(ref i);
مديريت استثنائات ساخت يافته

[VB.NET]
کد:
Try
If x = 0 Then
Throw New Exception("x equals zero")
Else
Throw New Exception("x does not equal zero")
End If
Catch err As System.Exception
MsgBox("Error: " & Err.Description)
Finally
MsgBox("Executing finally block.")
End Try
[J#.NET]
کد:
try{
if (x == 0)
throw new Exception ("x equals zero");
else
throw new Exception ("x does not equal zero");
}
catch (Exception err){
if (err.getMessage() == "x equals zero")
System.out.println(err.getMessage());
//Handle Error Here
}
[C++.NET]
کد:
__try{
if (x == 0)
throw new Exception ("x equals zero");
else
throw new Exception ("x does not equal zero");
}
__catch(Exception e)
{
Console.WriteLine("Caught Exception"); 
}
__finally
{
Console.WriteLine("Executing finally block");
}
[C#.NET]
کد:
// try-catch-finally
try
{
if (x == 0)
throw new System.Exception ("x equals zero");
else
throw new System.Exception ("x does not equal zero");
}
catch (System.Exception err)
{
System.Console.WriteLine(err.Message);
}
finally
{
System.Console.WriteLine("executing finally block");
}
رهاسازی ارجاعات اشياء

[VB.NET]
کد:
o = Nothing
[J#.NET]
کد:
stringVar = null;
[C++.NET]

[C#.NET]
کد:
o = null;

منبع سایت پی سی ورلد