تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
out vs ref
#1
بسم الله الرحمن الرحيم
وصلى الله على محمد واله الطاهرين

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


سنتكلم عن الكلمتين المحجوزتين ref و out

ref كلمة محجوزة تستخدم مع تمرير المتغيرات الى الدوال وأن أي تغيير يطرأ على المتغير في داخل الدالة سيتأثرر به المتغير الرئيسي في الدالة الرئيسية.

ملاحظة/ يجب ان يعطى المتغير ذات الاشارة المرجعية ref قيمة اولية قبل تمريرها الى الدالة.

مثال على استخدام ref:


PHP كود :
private void Add(int num1,ref int num2)
        {
            
num2 num1 num2;
        }
 private 
void button1_Click(object senderEventArgs e)
        {
            var 
num2 7;
            
Add(2,ref num2);
 
MessageBox.Show(@"num2= " num2);
        } 

output: num2=9

لاحظ اخي العزيز في الدالة الرئيسية عرفنا متغير num2 واعطينا له قيمة اولية وبدون القيمة الاول لا نستطيع ان نستخدم ref واثناء تمرير المتغير num2 الى الدالة اشرنا اليه بالكلمة المحجوزة ref. وكذلك فعلنا في تعريف الدالة Add اشرنا بـref للباراميتر الثاني واثناء الجمع اسندت ناتج الجمع الى num2 (ليس شرطا ان تتشابه اسماء المتغيرات في دالة الجمع مع المتغيرات في الدالة الرئيسية) وبهذا تكون التأثير قد طرأ للمتغير الممر بالاشارة المرجعية ref في الدالة الرئيسية ويكون الناتج 9. أما بدون استخدام ref فان أي تغيير على الباراميترات في الدالة لا يتأثر بها المتغيرات في الدالة الرئيسية.


نأتي الى الكلمة المحجوزة out: شبيهة بـref لكن الفرق الوحيد انه لا يحتاج الى ان يسند الى المتغير المؤشر بـout قيمة اولية ,ما عدا ذلك فهي تؤدي نفس وظيفة الـref لنأخذ المثال التالي:

PHP كود :
private void Sub(int val1int val2out int res)
        {
            
res val1 val2;
        }

private 
void button1_Click(object senderEventArgs e)
        {
            
int res;
            
Sub(53out res);
            
MessageBox.Show(@"Result is: " res);
        } 

output: 2

لاحظ ان out هنا تعمل عمل return لكن بدون الحاجة الى دالة ترجع قيمة ,المسألة فقط عمل متغير اضافي مؤشر بـout تكون حاضن للناتج وبذلك تقوم بارجاع ا الناتج الى الدالة الرئيسية ,وبهذا نكون قد استغنينا عن الـreturn.

اتمنى أن المعلومات افادتكم وبصراحة انا اميل الى استخدام out بدل الـreturn لاضفي لمسة الى برامجيSmile

ولا تنسوني و والدي من صالح دعواتكم

والسلام عليكم ورجمة الله وبركاته
الرد }}}}
تم الشكر بواسطة: الشاكي لله , hoob computer , a_almisery
#2
وعليكم السلام و رحمة الله و بركاته,

رحم الله والديك أخوية سجاد.
معلومة مفيدة مجنت اعرفها Smile

السلام عليكم
الرد }}}}
تم الشكر بواسطة:
#3
السلام عليكم

و والديك اخوية العزيز الله يخليك

تحياتيف
الرد }}}}
تم الشكر بواسطة:


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


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