منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : أفضل طريقة لإنشاء كائن جديد - شارك في النقاش
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : النبهاني


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

في الحقيقة قد يتبادر الى الذهن عند رؤية اكواد من هنا وهناك حول طريقة تعريف الكائنات ، لاحظ الكود التالي :

كود :
[SIZE=2]1- [/SIZE][SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] x [/SIZE][SIZE=2][color=#0000ff]As[/color][/SIZE][SIZE=2] Y = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Y[/SIZE]
[SIZE=2]2- [/SIZE][SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] x = [/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Y[/SIZE]
[SIZE=2]3- [/SIZE][SIZE=2][color=#0000ff]Dim[/color][/SIZE][SIZE=2] x [/SIZE][SIZE=2][color=#0000ff]As [/color][/SIZE][SIZE=2][color=#0000ff]New[/color][/SIZE][SIZE=2] Y[/SIZE]
( ملاحظة ، وضعت الارقام في الكود لتسهيل الاشاره )

بالنسبه لأي مبرمج VB.NET الطريقة الأكثر روعه في الصيغه هي الثالثه ، إلا أنك لو جئت لتقرأ كودا مكتوبا في احد ربوع الشبكة ، او قرأت احد الكتب لوجدت انهم في الأمثله يستخدمون الطريقة الأولى !! طيب ما الفرق بينهما ؟ و لماذا يكثر استخدام الطريقة الأولى ؟ هذا محور النقاش في هذا الموضوع
ولو نلاحظ ان مبرمجي #C يستخدمون الطريقة الاولى ! لماذا ؟ لا اعلم فأنا لست خبير #C

فليدلو كل عضو بدلوه في هذا الجانب - شرط ان يكون الكلام على منطق علمي لا عاطفي او مزاجي فنحن عرب - ولنرى اي الطرق هي الأصح ، والأفضل ان نبحث في مراجع خارجيه لتكون افضل
كاتب المشاركة : أحمد جمال


لنعد لنقطة ما قبل الصفر في وضع الكلمة New والتي لا تستخدم لتعريف نوع نسخة ، بل تستخدم لاطلاق ال Constructor .

طبعاً الطريقة :

كود :
Dim x As New Y
تعني انني قمت بعمل نسخة X من النوعية Y وقمت بربطه مباشرة وهو ما يعرف باسم Early Binding أو الربط المبكر ، وهو سريع جداً في التفيذ .

أما الجملة الثانية وهي :

كود :
Dim x As Y = New Y
فهي تنفذ ما يدعى بالربط المتأخر Late Binding ونفس الجملة يمكن كتابتها بشكل آخر هو :

كود :
Dim x as Y
x = new Y
وطبعاً لن أذكرك بإنها بطيئة مقارنة بالطريقة الأولى .

الطريقة :

كود :
Dim x = New Y
هي نفسها كأنك قمت بكتابة الكود التالي :

كود :
Dim x
x= new Y
وفي هذه الحالة - لن يعطيك خطأ لو كنت تستخدم Option Explicit Off ولكن لن تجد مبرمجاً على سطح الأرض ينصحك بعمل هذا - وفي هذه الحالة سيتم تعريف x من نوع Object ومن ثم يتم تحويلها للنوع المطلوب لاحقاً ، ولن أذكرك بالبطء الناتج عن هذه العملية .

وإذا لم تكن تستخدم الخيار Option Explicit Off فإن الكود السابق يمكن كتابته بالشكل التالي :

كود :
Dim x As Object
x= new Y
نصيحة لك ، لا تقم بذلك إلا عندما تحتاج إليه ، ولكن هل سأحتاج إليه فعلاً ؟؟؟
في الواقع نعم ، ولكن هذه موضوع آخر ...

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