تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Vb 2008 على الأبواب ، فهل تعرف ماذا حمل لك Vb 2005 -
#1
كاتب الموضوع : النبهاني


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

سؤال وجيه أليس كذلك Smile

[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
[b]الكود السابق يتسبب بخطأ والسبب هو تعريف المتغير n والدالة getValue على أنه من النوع system.Int32 ، قد تظن أخي العزيز ان Int32 هو الذي يتبع System الموجود في net framework مباشره لكن دعني اخبرك ان المقصود ها هنا هو ما يتبع فضاء الاسماء system الذي أنشأته أنت قبل قليل !
طيب والحل ؟ الكلمة المحجوزة 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
[b]التفرع Using :
ان كنت مبرمج 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
[b]ففي بداية التفرع قمنا بإنشاء كائن جديد ( لا يهم من أي نوع المهم كائن له الواجهة IDisplosable ) وقمنا بعمل اللازم معه واستفدنا منه داخل التفرع ، لكن بعد التفرع فإنك لن تستطيع التعامل معه وهذا يدلك على أن الكائن قد تم مسحه من الذاكرة وتحرير المصادر التي كان يشغلها من النظام !

وبرأيي الشخصي فإن هذا التفرع مهم خصوصا عندما نقوم بالتعامل مع كائنات تشغل حيزا كبيرة من مصادر النظام ونريد التعامل معها بشكل مؤقت فقط ونهتم بتحرير مصادرها بعد الاستفاده منها دون ان ننسى ان نستخدم الاجراء 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
تلك الحلقة التكرارية تحديدا عن السطر الذي استخدمنا فيه كلمة Continue يختبر قابليه قسمه قيمه Counter على 2 ، فإن كان يقبل القسمة ( الباقي يساوي 0 ) فإنه يتخطى هذا الرقم ويذهب إلى الخطوة التالية من الحلقة أي يعود للسطر الذي فيه كلمة For مباشره ، أما إن كان لا يقبل القسمة على 2 ( الناتج لا يساوي 0 ) فإنه يكمل الحلقة .

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

مصادر المعلومات في هذا الموضوع هي : كتاب Accelerated VB 2005 ومكتبة MSDN التي تشرح وتفصل وتجد فيها كل شيء طبعا Cool

الموضوع عباره عن تدوينة في مدونتي .

تحياتي
}}}}
تم الشكر بواسطة:
#2
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]المشاركة الأساسية كتبها !!! BoriS !!!
لا تستدعى او تستخدم المجموعة Garbage Collection الا مع المتغيرات Reference type فقط اى انها لن تستخدم مثلا مع متغير من نوع Int23 لانها تفرغ من الذاكرة بدون تدخل من gc لوجودها داخل Stack وليس Managed heap.
[/TD]
[/TR]
[/TABLE]

شكرا لك على التصحيح اخي بوريس .. جزاك الله خيرا وكذلك مشرفنا بدرميديا
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] اريد كود بالفيجوال بيسك 2008 يقراء سريال المازربورد nabil.1710 5 626 13-06-16, 12:16 AM
آخر رد: محمد سالم المحترف
  طلب اكواد فجوال بيسك دوت نت 2008 shgeen 2 643 24-02-13, 06:42 PM
آخر رد: السندباد المصري
  دمج قاعدة بيانات SQL Server 2008 مع المشروع بالـ VBNET snipercoder 3 2,016 12-02-13, 03:39 PM
آخر رد: wael
  معلومة ::: Visual Studio 2005 Automation Samples RaggiTech 1 364 06-10-12, 08:00 PM
آخر رد: RaggiTech
  كود- حساب مواقيت الصلاة Prayer Times في الدوت نت 2008 و 2005 RaggiTech 0 1,472 05-10-12, 01:48 PM
آخر رد: RaggiTech
  ملاحظات هامة عند ترقية مشاريع VB6 إلى VB .net 2008 RaggiTech 0 470 05-10-12, 01:32 AM
آخر رد: RaggiTech
  يمكننا استخدام فيجول بايزيك 2008 لإنشاء صفحات أشرطة إضافية لـ Excel 2007 RaggiTech 0 356 05-10-12, 01:14 AM
آخر رد: RaggiTech
  دروس ترجمة كتاب فيجوال بيسك 2008 خطوة خطوة RaggiTech 2 917 03-10-12, 02:22 PM
آخر رد: RaggiTech
  تعرف على الفئة System.Environment ( مجرد بدايه فقط ) RaggiTech 0 278 03-10-12, 09:19 AM
آخر رد: RaggiTech
  الدرس الرابع - تعرف على قوائم VB.Net 2005 (ج 2) RaggiTech 0 611 02-10-12, 06:15 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم