الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أريد شرح عن الخاصية BYREF

مغلق
بدأه hassaan100 في 19 أكتوبر 2005 · 1 رد · 529 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الخاصية Byref الخاصة بالإجراء sub غير مفهومة لدي بشكل جيد ..

فقط أريد شرح عنها مدعم بأمثلة بارك الله فيكم

#2

السلام عليكم

غالي والطلب رخيص , بس الأول كلمة ByRef مش خاصية B)

غالبا انت تجد كلمة ByRef في تعريف متغير لاستخدامه كـ Parameter لدالة أو Sub ,

    Public Function sum(ByRef x As Integer, ByRef y As Integer)
        Return (x + y)
    End Function

وما معناها ؟ معناها أن الـ Compiler يقوم بانشاء متغير في الـ Heap من النوع الذي تحدده أنت ,

وبالمره ما معني كلمة ByVal ؟ معناها أن الـ Compiler يقوم بانشاء متغير في الـ Stack يحمل عنوان متغير في الـ Heap ,,,

ملحوظه : الـ Stack , Heap أسماء أماكن في الذاكره ,

يعني لو قمت بعمل متغير ByVal وقمت بعمل تغيير في قيمته ثم عرضت قيمته ستجد أنها لم تتغير , أما لو كان ByRef وقمت بعمل تغيير في قيمته ثم عرضت قيمته ستجد أنها تغيرت ,

طبعا أنت تريد مثال لكي تفهم الفرق بينهما :

أنشئ دالة تأخذ 2 Parameters وخلي بالك ByVal , وتقوم بتبديل القيم التي أخذتها ,

    Public Function swap(ByVal x As Integer, ByVal y As Integer) As Integer
        Dim temp As Integer
        temp = x
        x = y
        y = temp
    End Function

ثم كود حدث تحميل الفورم اكتب الكود التالي لعرض قيم المتغيرات قبل تطبيق الدالة وبعد تطبيقها :

        Dim xx As Integer = 5
        Dim yy As Integer = 3
        MsgBox(xx & "," & yy)
        swap(xx, yy)
        MsgBox(xx & "," & yy)

قم بتنفيذ البرنامج وانظر النتيجه ,

قم بتغيير تعريف المتغيرات من ByVal الي ByRef , وانظر النتيجه ,

وفي النهاية أرجو أن تكون قد فهمت شرحي جيدا ,

وأرجو أن تدعو لمشرف القسم الأخ crazy-man لأنه من علمني الفرق بينهما والمثال الأخير مأخوذ عنه ,,,

تم تعديل هذه المشاركة بواسطة hazzoom في 19 أكتوبر 2005 في 20:58

هذا الموضوع مغلق.

مواضيع مشابهة