تفاوت ها ی بین VisualBasic.netو VisualC#.net(قسمت اول)

30 03 2008

بدلیل وجود تفاوت های در گذشته بین vbو C/C++ , بسیاری از توسعه دهندگان تفکرات نادرستی درباره ی vb.net دارند . بسیاری از توسعه دهندگان VB فکر می کنند که Vc.net یک زبان قوی تری نسبت بهVb.net است . به عبارت دیگر توسعه دهندگان VB فکر می کنند که شما می تونید باVc.net کارهایی رو انجام بدید که با VB.Net نمی شه . تنها به دلیل کارهایی که در C/C++ شما می تونید انجام بدید ولی در Visual Basic 6.0 یا نسخه های قبلی نمی تونستید انجام بدید , اما این تفکر درست است .

با وجود اینکه بین VB.net و Vc.net تفاوت هایی وجود داره , اما هر دو زبان های برنامه نویسی برتری هستند که بر پایه Microsoft .net Framework بنا شده اند , و انها از قدرتی مساوی نسبت به هم دارند . VB.net یک زبان برنامه نویسی شی گراء که شامل ویژگی های جدید و بهبود یافته همچون وراثت , چند ریختی و سربارگذاری است . Vb.net و همVc.net استفاده می کنند از زبان مشترک اجرا(common language runtime) . و تقریبا بین انها از نظر عملکرد تفاوتی وجود نداره . شاید Vc.net اندکی ویژگی های قویتری داشته باشه همچون
رسیدگی به کد های مدیریت نشده , و شاید VB.net راحتر استفاده بشه با فراهم کردن قابلیت هایی چون late Binding.

هر چند که تفاوت های بین Vb.net و Vc.net بسیار اندک مقایسه شد در توضیحات فوق. اما باید به خاطر داشت که .NET framework انتخاب شده برای دو زبان مستقل از هم دیگر . وقتی که شما می خواهید انتخاب کنید VB.net یا Vc.net را , تصمیم گیری خودتون رو براساس دانش قبلی و راحتی استفاده قرار بدید . اسانتر است استفاده از VB.net برای توسعه دهندگان Visual Basic 6.0 و برای برنامه نویسان C++/java استفاده از VC.net. تجربه برنامه نویس اهمیت به مراتب بالاتری داره نسبت به تفاوت های اندک میان دو زبان برنامه نویسی .

اهمیت نداره زبانی که شما انتخاب می کنید بر پایه برتری شخصی شما باشه یا تجربه گذشته , هر دو زبان ابزار قدرتمندی برای توسعه دهندگان بوده و زبان های برتر برنامه نویسی که استفاده می کنند از زبان مشترک اجرا در .net FrameWork.

تفاوت ها ی بین VisualBasic.netو VisualC#.net

عمده ترین تفاوت ها بین این دو زبان دردسته های زیر طبقه بندی شده اند:

  • Case sensitivity
  • Variable declaration and assignment
  • Data types
  • Statement termination
  • Statement blocks
  • Use of () vs. []
  • Operators
  • Conditional statements
  • Error handling
  • Overflow checking
  • Parameter passing
  • Late binding
  • Handling unmanaged code
  • Keywords

Case sensitivity :

نام های معین در Vb.net حساس به بزرگی و کوچکی حروف نیستند اما نام های مشخص شده در Vc.net به بزرگی و کوچکی حروف حساس هستند .

Variable declaration and assignment:

در VB.net متغیرها پیش از نوع داده معرفی می شوند ولی در VC.net متغیرها بعد از نوع داده .

Visual C# .NET Visual Basic .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 SqlConnection SqlConnection con;
Dim x As New Y(”ABC”)
or
Dim x As Y = New Y(”ABC”)
Y x = new Y(”ABC”);

Data types :

نام نوع داده ها در Vb.net و Vc.net متفاوت است .برای نمونه , Integer در Vb.net و Int در Vc.net . اگر چه فضای نام System.Int32 , نوع پایه در .Net FrameWork برای

Integerو Int معرف انها بوده که شما می تونید از این فضای نام به شکل مشابهی در هر دو زبان استفاده کنید. زبان Vc.netهمچنین حمایت می کنه از نوع های داده اییsigned byte, unsigned short, unsigned int و unsigned long که در Vb.net موجود نیستند .

جدول زیر لیست تفاوت های اسامی نسبت داده شده در هر دو زبان بوده و نوع های اصلی که معرف انها است .

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
Object object System.Object
n/a sbyte System.Sbyte
n/a ushort System.UInt16
n/a uint System.UInt32
n/a ulong System.UInt64

Statement termination:

دستورات در Vb.net به اتمام می رسند با اتمام هر خط . شما می تونید با استفاده از کولن(:) چندین دستور رو در یک خط قرار بدید , و همچنین با استفاده از ( _ ) یک دستور رو در چندین خط قرار بدید .

در Vc.net دستورات با رسیدن به کاراکتر سیمیکولن (;) به اتمام می رسند شما می تونید چندین دستور رو در یک خط قرار بدید , و یا یک دستور رو در چندین خط.

Visual Basic .NET Visual C# .NET
A = 5
B = 7 : C = 8
MySub (Arg1, _
Arg2, _
Arg3)
A = 5;
B = 7; C = 8;
MySub (Arg1,
Arg2,
Arg3);

Statement blocks :

Vb.net به طور قراردادی بلوک دستورات رو نداره در عوض دارای کلمات مشخصی است که پایان هر دستور را مشخص می کند . Vc.net براکت ها ({ })
مشخص کننده بلوک دستورات هستند , در غیر این صورت دستوری تکی در نظر گرفته خواهد شد .

Visual Basic .NET Visual C# .NET
If A = 5 Then
DoSomething()
DoSomethingAgain()
End If
If (a == 5)
{
DoSomething();
DoSomethingAgain();
}
or
if (a == 5)
DoSomething();

DoSomethingAgain(); //This is not part of

//the if statement.

:Use of () vs. []

در Vb.net پرانتز های بکار گرفته می شوند برای مشخص کردن ایتم ها ی ارایه , ارگومان های توابع و خوص اندیس ها . در Vc.net پرانتز ها برای ارگومان های توبع بکار می روند و براکت ها بری ایتم های اریه ها و خواص اندیس ها.

Purpose Visual Basic .NET Visual C# .NET
Declare an array Dim a() As Long
Dim a(3, 5) as Integer
int[] x = new int[5];
Initialize an array Dim a() As Long = {3, 4, 5} int[] x = new int[5] {1, 2, 3, 4, 5};
Reallocate array Redim n/a
Functions Arguments X= A(5)
MySub (A, B, C)
MySub(A, B, C);
Property Indexes Y = MyDataSet.Tables_ (”Author”).Rows(5)._
Columns(”AuthorID”)
Y = MyDataSet.Tables["Author"]

.Rows[5].Columns["AuthorID"]

Operators:

عملگر های استفاده شده در Vb.net و Vc.net کمی متفاوت هستند . جدول زیر لیست عمگر های اصلی رو نمایش می ده .

Operator Visual Basic .NET Visual C# .NET
Additive
Addition + +
Subtraction - -
Multiplicative
Multiplication * *
Division / /
Integer division \ /
(depending on the operands)
Modulus (division returning only the remainder) Mod %
Exponentiation ^ n/a
Assignment
Assignment =
+= -= *= /*
=
+= -= *= /*
Integer division \=
/=
(depending on the operands)
Concatenate &= +=
Modulus n/a %=
Left shift n/a <<=
Right shift n/a >>=
Bitwise AND n/a &=
XOR n/a ^=
OR n/a |=
Relational and equality
Less than < <
Less than or equal to <= <=
Greater than > >
Greater than or equal to >= >=
Equal = ==
Not equal <> !=
Compare two object reference variables Is ==
Compare object reference type TypeOf x Is Class1 x is Class1
Compare strings = == or String.Equals()
Concatenate strings & +
Shortcircuited Boolean AND AndAlso &&
Shortcircuited Boolean OR OrElse ||
Shift
Left shift n/a <<
Right shift n/a >>
Scope resolution
Scope resolution . ., base
Postfix
Type cast Cint, CDbl, …, CType (type)
Member selection . .
Postfix increment n/a ++
Postfix decrement n/a
Unary
Indirection n/a * (unsafe mode only)
Address of AddressOf & (unsafe mode only)
Logical NOT Not !
One’s complement Not ~
Prefix increment n/a ++
Prefix decrement n/a
Size of type n/a sizeof
Bitwise
Bitwise NOT Not ~
Bitwise AND And &
Bitwise XOR Xor ^
Bitwise OR Or |
Logical
Logical AND, OR And &&
Logical OR Or ||
Conditional
Conditional IIf ?:
Pointer to member
Pointer to member n/a . (Unsafe mode only)

Conditional statements :

لیست زیر نمایش می دهد تفاوت بین عبارات شرطی را در Vb.net و vc.net

Conditional Statement Visual Basic .NET Visual C# .NET
Decision structure (selection)
Select Case …, Case, Case Else, End Select switch, case, default,
Decision structure (if … then)
If … Then, ElseIf … Then, Else, End If if, else
Loop structure (conditional) While… End While, Do [While, Until] …, Loop [While, Until] do, while, continue
Loop structure (iteration)
For …, [Exit For,] Next
For Each …, [Exit For,] Next
for, foreach
Control flow statement Exit, GoTo, Stop, End, Return, break, continue, goto, return,
throw

Error handling :

Vb.net هم خطاهای ساختیافته را مدیریت می کند هم خطاهای غیر ساختیافته را ولی vc.net تنها خطاهای ساخت یافته را مدیریت می کند.

Purpose Visual Basic .NET Visual C# .NET
Structured error handling Try

Catch

Finally

End Try
try, catch, finally,
throw
Unstructured error handling On Error GoTo …
On Error Resume Next
n/a
استفاده از مطالب فارسی فوق با ذکر منبع بلامانع (http://w2kir.wordpress.com) است .


کارها

اطلاعات

دیدگاه‌تان را بنویسید: