دردش وتعلم التقنية
نرحب بك معنا في منتدى دردش وتعلم التقنية

قم بتسجيل الدخول او قم بأنشاء حساب جديد وانظم الى اسره المنتدى

اسره المنتدى بأنتظارك ويشرفنا انظمامك الينا
دردش وتعلم التقنية
نرحب بك معنا في منتدى دردش وتعلم التقنية

قم بتسجيل الدخول او قم بأنشاء حساب جديد وانظم الى اسره المنتدى

اسره المنتدى بأنتظارك ويشرفنا انظمامك الينا
أخر المشاركاتأفضل الاعضاء هذا الشهرأفضل 10 اعضاء
Hex WorkShop 6.8.0 + Crack اليوم في 5:51lidongdongasd@qq.com
Rappelz JoKeR Weapons : AlNisr 04.05.24 22:09hope54
ملفات سيرفر امل الشعوب - Rappelz Server Files : AlNisr 03.05.24 19:32rappelz705
Rappelz All Clients : AlNisr 03.05.24 16:23cigarette987
ملفات سيرفر أمل الشعوب 7.4 03.05.24 16:13cigarette987
[حصرياً] أقوى جي ام تول , Royal GM-Tool 03.05.24 2:25hope54
مشكلة تبديل السلاح وتعلق السيرفر - 1 : AlNisr 02.05.24 20:20namanslah
حصريا TP-Tool By TwilightPrince V8.0 02.05.24 16:17Asher1997
Arabic Rappelz Gm Tool 02.05.24 13:48Asher1997
شرح صنع لانشر امل الشعوب رسمي بصيغة bat 01.05.24 19:24Asher1997
6 المساهمات
3 المساهمات
2 المساهمات
1 مُساهمة
1 مُساهمة
1 مُساهمة
1 مُساهمة
1 مُساهمة
2853 المساهمات
2198 المساهمات
1672 المساهمات
1586 المساهمات
1365 المساهمات
1156 المساهمات
1097 المساهمات
996 المساهمات
588 المساهمات
567 المساهمات

اذهب الى الأسفل

الدرس الخامس عشر : بعض المميزات لل method 2

المشاركة رقم: ( 1 )
GeNeRaL_Dz
GeNeRaL_Dz
تقني نشيط
تقني نشيط
المشاركات : 193
نقاط : 264
التقييم : 3
تاريخ التسجيل : 27/03/2013
19.01.14 18:28


وفي هذا الدرس إن شاء الله سنوضح :
1- تعريف المتغير كقيمة(by value) أو كمرجع (by reference) .
2- إمرار المتغير في الmethod كقيمة (pass-by-value) أو كمرجع (pass-by-reference) .

والآن بسم الله نبدأ :

1- تعريف المتغير كقيمة(by value) أو كمرجع (by reference) .
المتغير المعرف كقيمة (by value) يحتوي على بيانات من النوع المعرف به وتملك قيمة واحدة فقط ، مثلا ً :
 

C#
int x = 5 ;


والأنواع التي تعرف بها هذا النوع من المتغيرات هي :
- الأنواع الغير كسرية (صحيحة) : sbyte , byte , char , short , ushort , int , uint , long .
- الأنواع الكسرية : float , double .
- وهناك النوعان : decimal , bool .

أما المتغير المعرف كمرجع (by reference) يحتوي على عنوان الموقع في الذاكرة للمتغير الذي عُـرّف به ، وعادة ً يشير إلى object (سنتوسع به في دروس لاحقة إن شاء الله )
 

C#
Ref int x ;

لكن ال object بشكل موجز ( لسهولة المقارنة ) :
هو عبارة عن متغير يحتوي على عدد من المتغيرات ، وكل واحدة من هذه المتغيرات تمتلك قيمة .
وأكثر هذه المتغيرات تعرّف بالأنواع التالية : string , object ، إلى أنه يمكن استخدام أي نوع آخر .
ويمكن للمبرمج أيضا ً إنشاء متغير من نوع reference عن طريق بناء ما تسمى class (والتي أيضا ً سنتوسع بها في دروس لاحقة إن شاء الله ) .
والجدول التالي يعرض قائمة من الأنواع المستخدمة في تعريف المتغيرات وقيم كل واحدة وحجمها :

 
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]
2- إمرار المتغير في الmethod كقيمة (pass-by-value) أو كمرجع (pass-by-reference) .
لإستدعاء المتغير في ال method طريقتين :
1- كقيمة(pass-by-value) :
وفي هذه الحالة يتم أخذ نسخة من قيمة المتغير ، حيث أن التغيرات التي تحدث على هذه القيمة لا تؤثر على قيمة المتغير الأصلية . وهذا يمنع بعض التأثيرات الجانبية التي يمكن أن تؤثر على صحة عمل البرنامج .

2- أو كمرجع (pass-by-reference) .
وفي هذه الحالة أي تأثير على قيمة المتغير داخل ال method تتأثر قيمة المتغيرالأصلية ، وهذا ما يساعد على التقليل من ثقل نسخ البيانات من داخل المتغيرات خاصة إذا كانت من نوع object ، إلا ّ أنه يضعف الأمن على قيمة المتغير الأصلي .

ملاحظة :
هناك كلمة محجوزة وهي out فهي by reference أيضا ً إلا أنه عند تعريف متغير في method المتغير المستــَـلـَـم لا يشترط أن يحمل قيمة ، أي يمكن أن يحمل قيمة إن لم يكن نستطيع أن نضع له قيمة افتراضية داخل ال method ، وسيتضح المعنى أكثر مع البرنامج .

والآن سنقوم بكتابة برنامج لتتوضح لك الصورة .

الهدف الرئيسي في هذا البرنامج ملاحظة أثر ال Square Method أي مربع العدد عند استدعائه by value أو by reference .
والآن :
يحتوي البرنامج على ثلاثة (methods) لحساب مربع عدد صحيح :

الأول :
 


C#
SquareRef( Ref int x)

{

x = x * x ;

}



أي أنه سيتعامل مع القيمة المبعوثة إليه بعنوانها ، فمثلا ً لو بعثنا له 5 فسيقوم يحفظ عنوان القيمة 5 ومن ثم يربع القيمة ويعيدها إلى نفس العنوان . فإذا طبعنا قيمة x سيكون الناتج 25 لأنه قد أخذ مكانه فلو استدعينا ال method مرة أخرى وبعثنا له قيمة x والتي هي 25 فسيكون الناتج 625 .

الثاني :
 

C#
SquareOut( out int x)

{

x = 6 ;

x = x * x ;

}




وتعمل نفس عمل ال reference إلا أنه إن بعث له قيمة 5 مثلا ً سيحفظ عنوانها ثم يربعها ويعيدها إلى نفس عنوانها 25 . وأما إذا لم يبعث له قيمة فيمكن إعطاؤها قيمة من داخل الmethod ويحفظ عنوانها ويعيدها إليه 36 .

الثالث :
 

C#
Square( int x)

{

x = x * x ;

}





حيث إذا بعثنا له متغير يحمل القيمة 5 = y سيعمل منها نسخة ويربعها ويطبع 25 . لكن لو طبعنا المتغير y نجده مازال 5 .

هكذا نكون قد انتهينا من تعريف المتغير by reference أو by value وفي الدرس التالي سنوضح إن شاء الله كيفية التعامل وإنتاج الأرقام العشوائية .

وهذا هو البرنامج مع بعض الملا حظات الموضحة عليه :

.cs.zip]تحميل
 
لا تنسوا التقييم أخوكم GeNeRaL_Dz


هده الشروح تم تقديمها من تاليفي ..

وهدا بهديها للاخ hassuny

تحيااتي ..


الرجوع الى أعلى الصفحة
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى