بدلیل وجود تفاوت های در گذشته بین 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 |






نظرات دوستان