تقييم الموضوع :
  • 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


الردود في هذا الموضوع
out vs ref - بواسطة Sajad - 13-05-14, 05:48 PM
RE: out vs ref - بواسطة hoob computer - 18-05-14, 09:46 AM
RE: out vs ref - بواسطة Sajad - 18-05-14, 05:55 PM

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


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