مشاريع
أقسام المقالات
Total Articles: 19
مؤتمرات وأحداث
مراكز وانجازات
.net 2008 Course
آخر 10 مواضيع
كتب وملخصات
Tips & Tricks
الفروقات بين C# And VB.net - الخلاصة 99% تشابه
السبت، ١٩ أبريل ٢٠٠٨

في هذه المقالة أهدف إلى توضيح بعض الفروقات بين C# و VB.net في اشارة إلى أن الفروقات بينها 90% فقط في طريقة الكتابة ، ولن أناقش مبدأ أنهما متشابهان في البنية التحتية فهذا أمر مفروغ منه ، ومن أجمل ما قرأت مقال الأستاذ أيمن المدهون بعنوان : لا تكذبي إني رأيتكما معاً ، على هذا الرابط :

http://www.vb4arab.com/vb/showthread.php?t=726

ولكني الآن سأبدأ بالتعرض لأوجه الخلاف ، وستكتشف في نهاية الدرس أن ليس ثمة اختلافات حقيقة بل هي لعبة تسويقية من مايكروسوفت كي لا تخسر مبرمجي فيجوال بيسك ، وفي نفس الوقت لتجذب إليها مبرمجي عائلة C .

وسأضع هنا تنويهاً عن الفروقات الغوية الأبرز وأحيلك في آخر الدروس إلى موسوعة للفروقات بين هاتين اللغتين ، ولنبدأ بالفروقات اللغوية - فروق غير ذات قيمة - :

* أولاً : كونك مبرمج سي شارب لا تنس أن تضع ; في آخر كل سطر

* ثانياً : طريقة تعريف المتغيرات :

VB.net :

Dim X as Integer
Dim X as ClassName=new ClassName()



C#

int x;

ClassName x=new ClassName();




* ثالثاً : في حالة الشروط في VB.net اكتب = أما في C# اكتب == ، كما ستجد العلامة != لعدم المساواة بدلاً من <> .

* رابعاً : تعتمد لغة VB.net على جمل مثل End وتستخدمها في الاجراءات والكلاسات وغيرها مثلاً :

if x=1 Then

End if




بينما تجدها في C# باستخدام الأقواس :


if(x==1)

{

}



وكذلك في الكلاس والاجراءات أيضاً :


VB.net :

Imports System

Namespace MyNameSpace

Class HelloWorld

'Entry point which delegates to C-style main

Private Function

Public Overloads Shared Sub Main()

Main(System.Environment.GetCommandLineArgs())

End Sub

Overloads Shared Sub Main(args() As String)

System.Console.WriteLine("Hello World")

End Sub 'Main

End Class 'HelloWorld End Namespace 'MyNameSpace





C# :


using System

Namespace MyNameSpace

{

class HelloWorld

{

static void Main(string[] args)

{

System.Console.WriteLine(
"Hello

World"
)

}

}

}




* خامساً ، في فيجوال بيسك .net سوف تستخدم And,Or,Not,OrElse بينما في C# سوف تستخدم && ! .

* سادساً : عند جمع النصوص استخدم & في VB.net ولكن في C# استخدم + .

* سابعاً : else if في C# هي ElseIf في VB.net

* ثامناً : كما اسلفنا في موضوع End ، ففي الحلقات التكرارية تعتمد C# على الأقواس أيضاً :


for (i = 2; i < = 10; i += 2)

{

System.Console.WriteLine(i);

System.Console.WriteLine(i*10);

}



وفي حالة كونها سطر واحد يمكن الاستغناء عن الأقواس :


for (i = 2; i < = 10; i += 2)

System.Console.WriteLine(i);




أما في VB.net فهي تأخذ شكلاً موحداً :


For c = 2 To 10 Step 2

System.Console.WriteLine(c)

Next



ونفس الأمر بالنسبة لباقي الحلقات التكرارية While و for each وخلافه .


* تاسعاً : بالنسبة للمصفوفات وخلافه يستخدم القوس [] بدلاً من () في VB.net .

C#

int[] nums = {1, 2, 3};

for (int i = 0; i < nums.Length; i++)

Console.WriteLine(nums[i]);




Vb.net

Dim nums() As Integer = {1, 2, 3}

For i As Integer = 0 To nums.Length - 1

Console.WriteLine(nums(i))

Next



* لن تجد تعليقاً Comment لأكثر من سطر في VB.net مثل /* */ في C# ، وكذلك XML Comments على الرغم من أنني قرأت انها ستكون مدعومة في الاصدارة القادمة .

* في C# سوف تستخدم العلامة المئوية % بدلاً من Mod في VB.net للحصول على باقي القسمة .

* لن تدعم لك VB.net استخدام Bitwise Operations في حالة Assignment على عكس ال C# حيث تتيح لك ذلك .

الآن نترك عنا الفروقات اللغوية ، فسوف نشير للباقي منها في نهاية المقال ، نتطرق هنا على عجالة للفروقات الفعلية :

* أول تلك الفروقات هي case sensitive ، حيث أنه في VB.net فإن Ahmed هي نفسها ahmed وهو ما لا يوجد في أي لغة في العالم سوى Basic ، ولا أستطيع أن أحدد فيما إذا كان هذا ميزة أم عيب .

مميزات في VB.net - باختصار - :

* دعم ال optional parameters موجود في VB.net وليس موجود في C# .

* with موجود في VB.net وليس موجود في C# .

* Catch ... When موجودة في VB.net وهي تتيح نظاماً أفضل لفلترة الأخطاء .

* يقوم VB.net بعمل Compile للكود في BackGround ، وهذه ميزة في التطبيقات الصغيرة ولكنها عيب في التطبيقات الكبيرة حيث تلاحظ بطء الفيجوال ستوديو .

مميزات في C# - اختصار - :

* يدعم C# ما يعرف باسم unsigned types ، وهو ما يمكنك استخدامه أيضاً في VB.net ولكنه ليس جزءاً اساسياً من اللغة .

* الميزة الأقوى في C# والتي لا تتوفر في VB.net هي السماح باستخدام

unsafe أو unmaneged code ما يتيح لك العمل على Pointers وخلافه ، ما يفتح لك آفاقاً واسعة في عدة مجالات مثل معالجة الصور image processing وخلافه .

ولعل هذه الميزة مما جعل C# قريبة من C++ من ناحية تعاملها مع كود منخفض المستوى Low Level Code وهو ما يجعل سي شارب الاختيار الأمثل للكثيرين .

* لن تجد increment و decrement في VB.net حيث ستتضطر إلى كتابة كود بالشكل التالي :

A=A+1

A-=1



بينما في C# يمكنك القيام بذلك بالشكل التالي :



A++

A--



* يمكنك أن تجد الخاصية sizeof في C# بينما لن تجدها في VB.net .


كان هذا موجزاً لأوضح الاختلافات والتي ستتعامل معها كثيراً ، وكما لاحظت فهي في أغلبها ليست ذات قيمة كبيرة .

في النهاية : ماذا أختار ؟

إذا كنت منتقلاً من VB 6.0 فعليك ب VB.net أما إذا كانت لديك خبرة ب C/C++/Java فعليك ب C# وإذا كنت جديداً في مجال البرمجة فأنت حر في اختيار ما يناسبك .

وفي النهاية ومهما كان اختيارك قم بالاطلاع على اللغة الثانية - علشان تضحك على الناس وتقول انا ببرمج بلغتين مش لغة واحدة - ، ويمكنك ايضاً في هذه الحالة أن تبرمج ب J# ويبقى اسمك ادام الناس بيبرمج ب 3 لغات

في آخر هذا الدرس أحيلك إلى هذا الرابط (متميز) ويشرح الموضوع بتفصيل كامل ، أتمنى لك الاستفادة منه .

http://www.codeproject.com/dotnet/vb...difference.asp

أيضاً الملف من موقع مايكروسوفت لتوضيح الفروقات :

http://support.microsoft.com/kb/308470

والسلام عليكم ورحمة الله وبركاته .

التسميات: ,

تم التحرير بواسطة Ahmed Gamal @ ١:١١ ص  
0 Comments:
إرسال تعليق
<< Home
 
الصفحة الرئيسية
Google Search
Google
       

كتاب المدونة
من نحن ؟
مجموعة من الكتاب باللغة العربية بلغة الدوت نت ، نلتقي هنا لكي نتشارك الخبرات والمعلومات حول الجديد في عالم الدوت نت
ارشيف المواضيغ والمقالات السابقة
VB.net <> C#

الفروقات بين سي شارب و في بي . نت
روابط ومواقع تقنية عربية
عداد الزيارات
Locations of visitors to this page
أشخاص شرفونا بزيارتهم
مركز التحميل
© 2005 DotNet4Arab Blogspot Template by Isnaini Dot Com