01-10-12, 07:50 PM
كاتب الموضوع : النبهاني
VB 2008 على الأبواب ، فهل تعرف ماذا حمل لك VB 2005 ؟
سؤال وجيه أليس كذلك
[b]من خلال احتكاكي بالكثير من مبرمجي VB.NET العرب ، لاحظت أن العديد منهم لا يعلم ما الفرق بين الاصدار 7.1 ( 2003 ) و الاصدار الثامن ( 2005 ) من VB.NET وما التحسينات الموجودة في الاصدار الاحدث بالرغم من أننا نستعد لاستقبال الاصدار الثامن 2008 ! ولاحظت ان الكثير من المبرمجين الذين ينتقلون إلى اصدارات احدث ، فإن استفادتهم من تلك الاصدارات لا تعدوا استخدام الكائنات والفئات الجديدة ( فضاء الاسماء My مثلا ) وكذلك الأدوات الجديدة ( DataGridView ) والاخرى التي طرأت عليها تطويرات وكذلك التطويرات التي دخلت على بيئة التطوير Visual Studio ( اقصد الـ IDE الخاصة به طبعا ) لكن قلة من يعرفون التغييرات التي طرأت على اللغة نفسها ! لذلك أردت أن أشد الانتباه إلى هذه النقطة خصوصا أن الحديث عن الاصدار القادم بدأ يكثر في هذه الأيام بينما لدينا الأغلبية لا يعرفون ماذا تطور في VB.NET في الاصدار 2005 ! هنا سأذكر ثلاثة فقط من هذه التطويرات والباقي عليكم .
الكلمة المحجوزة Global
اذا قمت بعمل namespace خاص بك ، ووضعت بداخله namespace آخر جديد لكن له اسم موجود لـ namespace آخر بمشروعك هنا تبرز اهميه الكلمة المحجوزة global ، دعني اوضحها بالكود التالي :
[/b]
كود :
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
طيب والحل ؟ الكلمة المحجوزة Global تعطيك امكانيه تحديد مصدر ذلك الـجزء ( method,function,type … etc ) وذلك بان تكتب الكلمة Global قبل فضاء الاسماء الذي تكرر اسمه لتخبر بها مترجم VB.Net 2005 بأنك تقصد فضاء الأسماء system الأصلي وليس الذي عرفته أنت بنفسك قبل قليل ، الكود التالي مثال لهذه العملية :
[/b]
كود :
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
ان كنت مبرمج C# أو لك معرفه بها فلا تظن انني اقصد كلمة محجوزة موجودة في لغة C# وهي using والتي هي مكافيء imports في vb.net ، انما أقصد تفرع جديد ظهر في 2005 وهو يقوم بعمليه مهمه في تحسين كفاءه تنفيذ البرنامج ، هذه العملية هي تحرير مصادر النظام !
حسنا ، دعنا نتحدث قليلا في هذا الجانب ، في العادة عندما تقوم بتعريف أي كائن من أي نوع فغنه يشغل حيزا من الذاكرة ومن مصادر النظام ، ولن يتم تحرير هذا الحيز الا بعد ان تتكرم المجموعة GrabageCollection بالقيام بذلك آليا ، يمكنك كمبرمج مهتم بتحرير مصادر الذاكرة والنظام ( خصوصا في التطبيقات الكبيرة ) بالقيام بذلك يدويا بإستدعاء الطريقة Dispose شرط ان يكون الكائن يتبع الواجهة IDisposable ، وبالعودة إلى صلب موضوعنا ، فإن التفرع Using يستخدم لاستدعاء الطريقة Dispose للكائن المستخدم والمصرح عنه في بداية التفرع كالكود التالي :
[/b]
كود :
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
وبرأيي الشخصي فإن هذا التفرع مهم خصوصا عندما نقوم بالتعامل مع كائنات تشغل حيزا كبيرة من مصادر النظام ونريد التعامل معها بشكل مؤقت فقط ونهتم بتحرير مصادرها بعد الاستفاده منها دون ان ننسى ان نستخدم الاجراء Dispose كحالة استخدام Dataset نقوم بتعبئته بعدد ضخم من السجلات لعمل اجراء معين عليها ومن ثم العودة بقمية محدده بعدها .
الكلمة المحجوزة Continue
وتستخدم مع الحلقات التكرارية من نوع Do,For,While حيث تخيرك في تكمله الحلقه أو اعادتها من جديد حسب شرط معين ، لاحظ الكود التالي :
[/b]
كود :
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
بالرغم من هذه الفائدة لهذه الكلمة المحجوزة إلا أنه بالإمكان الاستغناء عنها بإستخدام جمل الشرط IF… Else… End IF .
مصادر المعلومات في هذا الموضوع هي : كتاب Accelerated VB 2005 ومكتبة MSDN التي تشرح وتفصل وتجد فيها كل شيء طبعا
الموضوع عباره عن تدوينة في مدونتي .
تحياتي