![]() |
|
توضيح دالة المهدمات - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : توضيح دالة المهدمات (/showthread.php?tid=10225) الصفحات:
1
2
|
توضيح دالة المهدمات - ali.alfoly - 25-08-13 السلام عليكم ورحمة الله وبركاته كنت اقراء فى كتاب الاستاذ احمد جمال احتراف فيجوال بيسك 2008 وعندما وصلت الى المهدمات كتب هذا الكود لاكن مش فاهمه كود : [color=#0000FF]Protected[/color] [color=#0000FF]Overrides[/color] [color=#0000FF]Sub[/color][color=#000000] Finalize()[/color]فارجو من احد الاخوة الكرام ان يشرح لى هذه الجزئيه وجزاكم الله خيرا توضيح دالة المهدمات - 3booody - 25-08-13 [COLOR="#0000CD"]السلام عليكم ورحمة الله وبركاته تستطيع ان تعتبرها كــ حدث يتم تقنيصه لحظة موت الفئة التي انشأتها[/COLOR] توضيح دالة المهدمات - ali.alfoly - 25-08-13 طيب هذا الحدث لايتم تنفيذه عند هدم الاداة وما السر فى هذا الاسم Finalize() توضيح دالة المهدمات - 3booody - 25-08-13 اخي هو ما حدث كما قلت لك تستطيع ان تعتبره حدث لحظه تعريف فئة جديده معينة يتم حفظ الفئة في الذاكرة في لحظة التعريف يتم عمل المشيد New الموجود في كل فئة وعند موت الفئة التي انشئتها (أي الانتهاء منها وتحريرها من الذاكرة) يتم عمل هذا الصب تستطيع التأكد ضع كود كود : Public Class Form1راح يتم ظهور المسج لحظه الاغلاق والسبب تحرير الذاكرة توضيح دالة المهدمات - ali.alfoly - 25-08-13 جزاك الله خيرا وجعله فى موازين حسناتك طيب ارجو توضيح بعض النقاط مش فاهمها 1 - ماهذا الامر او هذه الدالة كود : [color=#0000FF]MyBase[/color][color=#000000].Finalize()[/color]ولماذا تم وضعها فى Try كود : [color=#0000FF]Protected[/color] [color=#0000FF]Overrides[/color] [color=#0000FF]Sub[/color][color=#000000] Finalize()[/color]2 - ما هذا الـ Try السابق الـ Try الذى اعرفه يكون بهذا الشكل كود : [color=#0000FF]Try[/color]3 - انا اعرف ان عمر المتغير ينتهى بانتهاء الاجراء الذى هو بداخله فى الكود السابق لحدرتك فى المشاركة #4 انا قمت بالاعلان عن المتغير داخل Sub الخاص بـ Button3 كود : [color=#0000FF]Private[/color] [color=#0000FF]Sub[/color][color=#000000] Button3_Click(sender [/color][color=#0000FF]As[/color] [color=#0000FF]Object[/color][color=#000000], e [/color][color=#0000FF]As[/color] [color=#2B91AF]EventArgs[/color][color=#000000]) [/color][color=#0000FF]Handles[/color][color=#000000] Button3.Click[/color]لماذا لم ينتهى بانتهاء الـ Sub بل انتهى بانتهاء الـ Class توضيح دالة المهدمات - الشاكي لله - 25-08-13 ali.alfoly كتب :[b]جزاك الله خيرا وجعله فى موازين حسناتك انا اهنيك على إنشائك للموضوع اخي فلو انك تجاهلت الامور الي مافهمتها راح تندم مستقبلا - عن تجربة أي شي مو فاهمنه ضع له موضوع هنا كي تستفيد منه ويستفيد الاخرون منه (ولكن هذا لايعني ان لاتبحث عن الحل اولا) لدينا مثل بالهجة البحرانية يقول : "اسئل واسئل حتى يقول الناس عنك أهبل" ههههه المهم ماعلينا إن شاء الله السطور القادمة توضح لك الي مافهمته -- 1- Finalize هي الدالة المعاكسة للمشيد (Constructed) المشيد هي دالة يتم اطلاقها عندما تقوم بإنشاء نسخة فئة باستعمال new لاحظ معي : PHP كود : Public Class Form1المثال السابق وضح لك المشيد ولكن ماذا عن "المهدم" (Finalize) ؟ المهدم هي دالة يتم اطلاقها عندما يموت الكائن ولست انت من تحدد موعد موت الكائن بل هناك شيئ يدعى Garbage Collection هي المسؤولة عن قتل الكائنات في الوقت المناسب -- 2[COLOR="#FF0000"]- try تستخدم لقنص الاخطاء وعدم توقف البرنامج عند حدوثها ، لاادري مالحالة التي تطلبت وضع try لإني لم أشاهد الكود كاملا [/COLOR] -- [COLOR="#FF0000"] 3- try - catch - finally هو التركيب الحقيقي لtry[/COLOR] ولكن يمكن الاستغناء عن finally والعكس صحيح ايضا (يمكن الاستغناء عن catch) وتستعمل finally لتفيذ الكود الذي بداخلها سواء حدث خطأ او لم يحدث بعكس catch التي تقوم بتفيذ الاكواد التي بداخلها إذا حصل خطا فقط -- 4- من الذي خدعك وقال لك ان الكائنات المرجعية تموت او (تنتهي حسب تعبيرك) بإنتهاء الإجراء (sub) صحيح أنا لانكر ان الكائنات تموت بإنتهاء الاجراء ولكن هذا يحدث فقط للكائنات (ذات القيمة) [COLOR="#2F4F4F"]الانواع المرجعية (Reference type) هي : 1- الفئات (class) 2- المصفوفات 3- النوع string 4- المفوضات[/COLOR] [COLOR="#0000CD"]الانواع ذات القيمة (Value type) : 1- جميع انواع الارقام (integer , double , flout ...) 2-النوع boolean و char وايضا date 3-التراكيب (structures) 4- التراكيب من نوع Enumerations (بشرط ان تكون البيانات داخل التركيب من نوع value type المذكورة فوق)[/COLOR] الحديث عن الفروقات بينهم فيه كلام شوي طويل ولكن إختصارا : الvalue type هو نوع يخزن قيمته في المكدسة حيث ان الكائن يشير الى قيمته مباشرة PHP كود : Dim a As Integer = 4 'تشير الى الرقم 4 a اما الrefrance type هو نوع يخزن قيمته في مكان في الذاكرة يسمى Managed Heap حيث ان الكائن يشير إلى عنوان القيمة في الManaged heap ضع الف خط تحت يشير إلى عنوان القيمة شوف هذا المثال : PHP كود : Dim a As New AAA 'في الذاكرة AAA يشير إلى عنوان بيانات الفئة a - نرجع لموضوعنا فالانواع ذات القيمة (value type) تموت بنهاية الاجراء PHP كود : Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loadخلاص المتغير num سينهي الى الابد وسيذهب إلى الجحيم بينما الانواع المرجعية لايتم حذفها بإنتهاء الاجراء . إنما يتم حذف مؤشر الكائن الذي يشير إلى بيانات الفئة PHP كود : Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loadفعند نهاية الاجراء سيتم حذف المؤشر xax ولكن ستبقى بيانات الفئة AAA في ال Managed heap !!!! قبل انتهاء الاجراء : بعد انتهاء الاجراء : ولهذا ترا ان الفئة لم تنتهي بإنتهاء الاجراء (يتم حذف مؤشر بياناتها فقط) إنما يتم حذف بيانات الفئة بواسطة Garbage Collection حيث انها فئة في الدوت نت تقوم آليا بإدارة الكائنات وقتلها (حذفها) في الوقت المناسب -- كما قلنا ان بيانات الفئة لاتنحذف بإنتهاء الاجراء بل تقوم Garbage collection بحذفها آليا في الوقت المناسب ولكن إن أردنا حذف البيانات يدويا يمكننا طلب الدالة collect من ال Garbage collection فهي تقوم بحذف جميع بيانات الفئات (او بيانات من نوع مرجعي) التي ليست لها مؤشر PHP كود : GC.Collect()ملاحظة : GC يشير الى Garbage collection -- -- -- اي استفسار اخر انا حاضر تحياتي توضيح دالة المهدمات - 3booody - 25-08-13 جزاك الله خير ريحتني من شرح طويل وانا شوي ضعيف في الشرح توضيح دالة المهدمات - ali.alfoly - 26-08-13 الشاكي لله كتب : جزاك الله خيرا وجعله فى موازين حسناتك يوم تلقاه انا كنت اظن ان New تنشى اوبجكت جديد من نفس النوع المشار اليه ( هههههههه غباء اه ) وكنت اقول هذا الاوبجكت الجديد مات ولم تحقق دالة الهدم واكثر شئ فعلا افادنى هو الفرق بين الانواع المرجعية (Reference type) و[b] الانواع ذات القيمة (Value type)
اخى الشاكى لله اسئل الله تعالى ان يبارك لك فى دينك وعلمك ومالك واهلك واخى الحبيب الغالى 3booody
[/b] توضيح دالة المهدمات - الشاكي لله - 26-08-13 ali.alfoly كتب :[b]جزاك الله خيرا وجعله فى موازين حسناتك يوم تلقاه انا كنت اظن ان New تنشى اوبجكت جديد من نفس النوع المشار اليه ( هههههههه غباء اه ) وكنت اقول هذا الاوبجكت الجديد مات ولم تحقق دالة الهدم واكثر شئ فعلا افادنى هو الفرق بين الانواع المرجعية (Reference type) و[b] الانواع ذات القيمة (Value type)
اخى الشاكى لله اسئل الله تعالى ان يبارك لك فى دينك وعلمك ومالك واهلك واخى الحبيب الغالى 3booody
[/b] الحمد لله انك فهمت وللمعلومة فقط يوجد فقط 2 من الانواع في الفيجوال بيسك ولي ذكرتهم سابقا (value type , reference type) بينما في السي شارب توجد ال (value type , reference type) بلاضافة الى نوع ثالث يسمى (Pointer type) -- شطحة : نصيحة من اخ لأخ لاتضيع وقتك مع فيجوال بيسك ، إتجه لسي شارب مباشرة لانك ستعاني لاحقا مع المصادر وقلة الامثلة والشروحات مصادر السي شارب على النت اكثر بكثييييييير من الفيجوال وخاصة مجال الشبكات ونظم التوزيع ، فلم ارى كتابا جيد يشرح ذلك للفيجوال بيسك ، وحتى تقنيات مايكروسوفت تلقاها مشروحة في code project بالسي شارب فقط الي يشوف طريقة تنظيم الكود في السي شارب ابدا مايتخيل نفسه يرجع للفيجوال بيسك [/b] توضيح دالة المهدمات - ali.alfoly - 26-08-13 الشاكي لله كتب : بالفعل هذا ما فكرة فيه الايام الماضيه رحت ادور على شروحات ASP.Net فوجدتها كلها مشروحة بالسى شارب فقررت باذن الله تعالى الاسبوع القادم ساتعلم السى شاري لاكن انا كان عندى 10 اسطوانات لتعلم الفيجوال هما بالفعل ساعدونى كتير لما تكون دورة واحده كامله الواحد يرتاح من كل شويه دورة والى يقولو الاول يقولو الثانى فهل هناك دورة كامله فى السى شارب |