الرئيسية > Visual Basic .Net > VB 2008 على الأبواب ، فهل تعرف ماذا حمل لك VB 2005 ؟

VB 2008 على الأبواب ، فهل تعرف ماذا حمل لك VB 2005 ؟

من خلال احتكاكي بالكثير من مبرمجي VB.NET العرب ، لاحظت أن العديد منهم لا يعلم ما الفرق بين الاصدار 7.1 ( 2003 ) و الاصدار الثامن ( 2005 ) من VB.NET وما التحسينات الموجودة في الاصدار الاحدث بالرغم من أننا نستعد لاستقبال الاصدار الثامن 2008 ! ولاحظت ان الكثير من المبرمجين الذين ينتقلون إلى اصدارات احدث ، فإن استفادتهم من تلك الاصدارات لا تعدوا استخدام الكائنات والفئات الجديدة ( فضاء الاسماء My مثلا ) وكذلك الأدوات الجديدة ( DataGridView ) والاخرى التي طرأت عليها تطويرات وكذلك التطويرات التي دخلت على بيئة التطوير Visual Studio ( اقصد الـ IDE الخاصة به طبعا ) لكن قلة من يعرفون التغييرات التي طرأت على اللغة نفسها ! لذلك أردت أن أشد الانتباه إلى هذه النقطة خصوصا أن الحديث عن الاصدار القادم بدأ يكثر في هذه الأيام بينما لدينا الأغلبية لا يعرفون ماذا تطور في VB.NET في الاصدار 2005 ! هنا سأذكر ثلاثة فقط من هذه التطويرات والباقي عليكم .

الكلمة المحجوزة Global

اذا قمت بعمل namespace خاص بك ، ووضعت بداخله namespace آخر جديد لكن له اسم موجود لـ namespace آخر بمشروعك هنا تبرز اهميه الكلمة المحجوزة global ، دعني اوضحها بالكود التالي :

Namespace SpecialSpace

    Namespace System

        Class abc

            Function getValue() As System.Int32

                Dim n As System.Int32

                Return n

            End Function

        End Class

    End Namespace

End Namespace

 

الكود السابق يتسبب بخطأ والسبب هو تعريف المتغير n والدالة getValue على أنه من النوع system.Int32 ، قد تظن أخي العزيز ان Int32 هو الذي يتبع System الموجود في net framework مباشره لكن دعني اخبرك ان المقصود ها هنا هو ما يتبع فضاء الاسماء system الذي أنشأته أنت قبل قليل !

طيب والحل ؟ الكلمة المحجوزة Global تعطيك امكانيه تحديد مصدر ذلك الـجزء ( method,function,type … etc ) وذلك بان تكتب الكلمة Global قبل فضاء الاسماء الذي تكرر اسمه لتخبر بها مترجم VB.Net 2005 بأنك تقصد فضاء الأسماء system الأصلي وليس الذي عرفته أنت بنفسك قبل قليل ، الكود التالي مثال لهذه العملية :

Namespace SpecialSpace

    Namespace System

        Class abc

            Function getValue() As Global.System.Int32

                Dim n As Global.System.Int32

                Return n

            End Function

        End Class

    End Namespace

End Namespace

 

التفرع Using :

ان كنت مبرمج C# أو لك معرفه بها فلا تظن انني اقصد كلمة محجوزة موجودة في لغة C# وهي using والتي هي مكافيء imports في vb.net ، انما أقصد تفرع جديد ظهر في 2005 وهو يقوم بعمليه مهمه في تحسين كفاءه تنفيذ البرنامج ، هذه العملية هي تحرير مصادر النظام !

 

حسنا ، دعنا نتحدث قليلا في هذا الجانب ، في العادة عندما تقوم بتعريف أي كائن من أي نوع فغنه يشغل حيزا من الذاكرة ومن مصادر النظام ، ولن يتم تحرير هذا الحيز الا بعد ان تتكرم المجموعة GrabageCollection بالقيام بذلك آليا ، يمكنك كمبرمج مهتم بتحرير مصادر الذاكرة والنظام ( خصوصا في التطبيقات الكبيرة ) بالقيام بذلك يدويا بإستدعاء الطريقة Dispose شرط ان يكون الكائن يتبع الواجهة IDisposable ، وبالعودة إلى صلب موضوعنا ، فإن التفرع Using يستخدم لاستدعاء الطريقة Dispose للكائن المستخدم والمصرح عنه في بداية التفرع كالكود التالي :

    Public Sub setbigbold(ByVal c As Control)

        Using nf As New System.Drawing.Font(“Arial”, 12.0F, _

            System.Drawing.FontStyle.Bold)

 

            c.Font = nf

            c.Text = “This is 12-point Arial bold”

        End Using

        ‘you can’t call nf here !

    End Sub

 

ففي بداية التفرع قمنا بإنشاء كائن جديد ( لا يهم من أي نوع المهم كائن له الواجهة IDisplosable ) وقمنا بعمل اللازم معه واستفدنا منه داخل التفرع ، لكن بعد التفرع فإنك لن تستطيع التعامل معه وهذا يدلك على أن الكائن قد تم مسحه من الذاكرة وتحرير المصادر التي كان يشغلها من النظام !

 

وبرأيي الشخصي فإن هذا التفرع مهم خصوصا عندما نقوم بالتعامل مع كائنات تشغل حيزا كبيرة من مصادر النظام ونريد التعامل معها بشكل مؤقت فقط ونهتم بتحرير مصادرها بعد الاستفاده منها دون ان ننسى ان نستخدم الاجراء Dispose كحالة استخدام Dataset نقوم بتعبئته بعدد ضخم من السجلات لعمل اجراء معين عليها ومن ثم العودة بقمية محدده بعدها .

الكلمة المحجوزة Continue

وتستخدم مع الحلقات التكرارية من نوع Do,For,While حيث تخيرك في تكمله الحلقه أو اعادتها من جديد حسب شرط معين ، لاحظ الكود التالي :

    Public Class EntryPoint

        Shared Sub Main()

            Dim Counter As Short

            Dim Total As Short

            Total = 0

            For Counter = 0 To 10

                If Counter Mod 2 = 0 Then Continue For

 

                Total += Counter

                System.Console.WriteLine(“The total is now: {0}”, Total.ToString)

            Next

        End Sub

    End Class

 

تلك الحلقة التكرارية تحديدا عن السطر الذي استخدمنا فيه كلمة Continue يختبر قابليه قسمه قيمه Counter على 2 ، فإن كان يقبل القسمة ( الباقي يساوي 0 ) فإنه يتخطى هذا الرقم ويذهب إلى الخطوة التالية من الحلقة أي يعود للسطر الذي فيه كلمة For مباشره ، أما إن كان لا يقبل القسمة على 2 ( الناتج لا يساوي 0 ) فإنه يكمل الحلقة .

 

بالرغم من هذه الفائدة لهذه الكلمة المحجوزة إلا أنه بالإمكان الاستغناء عنها بإستخدام جمل الشرط IF… Else… End IF .

 

أخيرا ، أتمنى أن تكون هذه التدوينة قد أشعلت شمعه وسط أحد غرف الظلام !

التصنيفات :Visual Basic .Net
  1. nasreen
    أبريل 24, 2009 الساعة 2:13 م

    شكرا جزيلا على هذه المعلومات بانتظار المزيد

  2. أغسطس 11, 2011 الساعة 1:06 م

    nothing

  1. No trackbacks yet.

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: