0 معجب 0 شخص غير معجب
في تصنيف برامج وألعاب بواسطة (8.9مليون نقاط)
الفرق بين ref و out من الكلمات الرئيسية في C #

الكلمة ref

1- من الضروري تهيئة المعلمات قبل تمريرها إلى الدالة

2- ليس من الضروري تهيئة قيمة المعلمة قبل العودة إلى دالة الاستدعاء

3- يفيد تمرير القيمة من خلال ref عندما تحتاج الدالة المطلوبة أيضًا إلى تغيير قيمة المعلمة التي تم تمريرها.

امثلة :

public void Sum(ref int x)

        {

            x = 80;

          

          

        }

       

        private void Form2_Load(object sender, EventArgs e)

        {

            int x=4;

            Sum(ref x);

            MessageBox.Show(x.ToString());

        }

        // OutPut -> 80

لاحظ كيف تم تغيير قيمة المتغير x في الدالة Form2_Load وذلك بسبب تمرير المتغير بالمرجعية

لو نقوم بتمرير المتغير بالقيمة لن يتم تغيير القيمة في الدالة Form2_Load

مثال

public void Sum( int x)

        {

            x = 80;

          

          

        }

       

        private void Form2_Load(object sender, EventArgs e)

        {

            int x=4;

            Sum( x);

            MessageBox.Show(x.ToString());

        }

        // OutPut -> 4

لو نقوم بتمرير متغير مرجعي بدون تهيئته بقيمة سوف تحصل على Error

مثال :

public void Sum(ref int x)

        {

            x = 80;

          

          

        }

       

        private void Form2_Load(object sender, EventArgs e)

        {

            int x; // Error

            Sum(ref x);

            MessageBox.Show(x.ToString());

        }

الكلمة out

1- ليس من الضروري تهيئة المعلمات قبل تمريرها إلى الدالة

2- من الضروري تهيئة قيمة المعلمة قبل العودة إلى دالة الاستدعاء

3- نفس كلمة ref في رقم 3

امثلة :

public void Sum(out int x)

        {

          x = 80;

          

          

        }

       

        private void Form2_Load(object sender, EventArgs e)

        {

            int x= 10;

            Sum(out x);

            MessageBox.Show(x.ToString());

        }

        // OutPut -> 80

مثال اخر

public void Sum(out int x)

        {

          x = 80;

          

          

        }

       

        private void Form2_Load(object sender, EventArgs e)

        {

            int x; //

            Sum(out x);

            MessageBox.Show(x.ToString());

        }

        // OutPut -> 80

اخر مثال

public void Sum(out int x)

        {

        

          

          

        }

       

        private void Form2_Load(object sender, EventArgs e)

        {

            int x = 50;  

            Sum(out x);

            MessageBox.Show(x.ToString());

        }

//Error

سببب الخطاء من الضروري تهيئة قيمة المعلمة قبل العودة إلى دالة الاستدعاء

انتهى ....................

من فضلك سجل دخولك أو قم بتسجيل حساب للإجابة على هذا السؤال

1 إجابة واحدة

0 معجب 0 شخص غير معجب
بواسطة (8.9مليون نقاط)
الفرق بين ref و out من الكلمات الرئيسية في C #

اسئلة متعلقة

0 معجب 0 شخص غير معجب
1 إجابة
سُئل أغسطس 13، 2023 في تصنيف برامج وألعاب بواسطة نجوم العلم (8.9مليون نقاط)
0 معجب 0 شخص غير معجب
1 إجابة
0 معجب 0 شخص غير معجب
1 إجابة
سُئل سبتمبر 22، 2022 في تصنيف تعليم السعودية بواسطة نجوم العلم (8.9مليون نقاط)
0 معجب 0 شخص غير معجب
1 إجابة
سُئل سبتمبر 22، 2022 في تصنيف تعليم السعودية بواسطة نجوم العلم (8.9مليون نقاط)
0 معجب 0 شخص غير معجب
1 إجابة
0 معجب 0 شخص غير معجب
0 إجابة
...