ممكن يا جماعة حد يشرح استخدامات كلمة this لانها مهمة جدا فلو امكن تساعدونا فيها بسرعة؟؟؟
this word
كلمة this بكل بساطه تشير الى الـ Object الحالي.
وهى مفيده جدا عندما نقوم بعمل Method تستقبل Paramater بنفس اسم متغير موجود في الكلاس ... مثلا ,
لو افترضنا هذا المثال ::
class MyClass
{
int x = 4;
public void MyMethod(int x)
{
x = x;
}عندما قمنا بكتابة x = x في الداله السابقة فكيف للـ Compiler يستطيع التمييز بين الـ x الخاصه بالداله والـ x الأخرى الموجوده في الـ Class ؟
لتفادي هذا الخطأ نقوم باستخدام كلمة this هكذا ::
class MyClass
{
int x = 4;
public void MyMethod(int x)
{
this.x = x;
}استخدمنا this.x لكى نقوم بتوضيح الأمر للـ Compiler وكأننا نقوله بطريقه صريحه >> قم بجعل المتغير x الموجود في الـ Object الحالي يساوي = الـ Paramater المرسل للداله MyMethod.
الـ Compiler لا يفهم الا بهذه الطريقه :D
وبالطبع مادامت كلمة this تتعلق بالـ Objects فقط وليس بالـ Class نفسه ... اذا لا يمكن استخدامها مع الـ static Methods ... فهذا الكود مثلا خطأ ::
class MyClass
{
int x = 4;
public static void MyMethod(int x)
{
//Error
this.x = x;
//Error
}لاحظ أننا قمنا باضافة كلمة static في تعريف الداله MyMethod وهذا ما أدى لظهور الخطأ.
تم تعديل هذه المشاركة بواسطة معتز شمس في 15 يونيو 2005 في 02:52
شرح جميل قوي قوي والله العظيم واللي يقول غير كدة يبقي........
بس انا اعتقد ان this لها استتخدامات اخري وياريت تحطلنا الشرح في ملف فيديو بجميع استخدامات this لأن زي ما انت عارف ان الشرح المرئي و المسموع افضل بكثير و بيثبت من الشرح المقروء
أشكرك أخي العزيز , ولكن لا أعتقد أنه يوجد استخدامات أخرى لكملة this غير أنها تشير الى الـ Object الحالي.
أنا بحثت في الـ MSDN عن استخدامات أخرى لها ولم أجد ( اضغط هنا , لمعرفة المعلومات المتوفره عنها في الـ MSDN )
وجدت فقط في الـ MSDN تلميح بفكره بسيطه أخرى لاستخدامها وهو عندما تكون مثلا قد قمت بعمل Method تستقبل Paramater من نوع object فيمكنك في هذه الحاله استخدام كلمة this في ارسال الـ object الحالي , الى الـ Method.
مثلا ... في Windows Application نفترض أنك قمت بعمل كلاس يحتوي على Method وهذه الـ Method تستقبل Paramater من نوع Form وتقوم بعمل بعض العمليات على هذه الـ Form وليكن مثلا تقوم بتغير لونها الى اللون الأحمر ::
أنت قمت بتعريف الكلاس والـ Method بهذا الشكل ::
public class MyCoolClass
{
public static void MakeItRed(Form inComming)
{
inComming.BackColor = Color.Red;
}طبعا قمنا بتعريف الداله على أنها static لتجنب القيام بعمل Instance من الـ MyCoolClass.
أنت الآن وانت في أى فورم وفي أى حدث بها تريد أن تقوم بتغيير لونها الى اللون الأحمر , تقوم ببساطه باستعاء الداله الموجوده في الـ MyCoolClass وتمرر this لها و this بالطبع تشير الى الفورم الحالي ::
MyCoolClass.MakeItRed(this);
شكرا ياباشا و دائما للأمام
هذا الموضوع مغلق.
