1. برمجة
2

ما الفرق بين التمرير بالقيمة والتمرير بالمرجع في لغة السي شارب

  • mohamed rabiaa
  • 2015-07-26T09:35:40+00:00
  • 2017-11-04T05:12:44+00:00
  • رابط مختصر
يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

  • الأفضل
  • الأحدث
  • الأقدم
5
عبد الرحمن أحمد 2015-07-26T13:37:27+00:00 أضف ردا
  • رابط مختصر

عندما تذهب لصندوق بريدك وتجد طرد صغير فهذا تمرير بالقيمة

بينما لو وجدت ورقة صغيرة عبارة عن إشعار بوصول طرد ثم أخذت الورقة وذهبت للموظف فستعطيه إياه ويحضر لك الطرد فهذا تمرير بالمرجع

بالنسبة للكود فأنت عندما تمرر متغير بالقيمة فأنت تصل إلى قيمته وتتعامل مع نسخة من الكائن الأصل وبالتالي فإن أي تعديل على خصائصه لن يؤثر على الكائن الأصل

أما التمرير بالمرجع فأنت تمرر مرجع الكائن الأصل وبالتالي أي تعامل مع خصائصه فأنت تعدل على الأصل

وهذا يفيد في حال تريد عمل دالة تجري عمليات على كائن ما ويعود مع إحداث التغييرات عليه.

1
eng.fouad 2015-07-26T14:33:03+00:00 أضف ردا
  • رابط مختصر

بالنسبة للكود فأنت عندما تمرر متغير بالقيمة فأنت تصل إلى قيمته وتتعامل مع نسخة من الكائن الأصل وبالتالي فإن أي تعديل على خصائصه لن يؤثر على الكائن الأصل

أما التمرير بالمرجع فأنت تمرر مرجع الكائن الأصل وبالتالي أي تعامل مع خصائصه فأنت تعدل على الأصل

كلام غير دقيق. يمكن تغيير خصائص الكائن من خلال "التمرير بالقيمة". كما أن التعامل يكون مع الكائن الأصل ذاته وليس نسخة منه.

"التمرير بالمرجع" يعني أنه يمكن إسناد قيمة جديدة للمرجع الذي تم تمريره داخل الدالة.

0
عبد الرحمن أحمد 2015-07-26T15:36:41+00:00 أضف ردا
  • رابط مختصر

يبدو أني فهمت خطأ

أنا ظننت الأمر مقارنة بين استخدام ref وبدونها

ويبدو أن السؤال هو بين استخدام ref و val

وعلى هذا فكلامي أعلاه غير موافق للسؤال

جزاك الله خيرا على التصويب

0
MouhcineFD 2015-07-26T15:42:52+00:00 أضف ردا
  • رابط مختصر

كلام الأخ عبد الرحمن أحمد معقول

  • التمرير بالمرجح يجنبك من عمل نسخة
0
عبد الرحمن أحمد 2015-07-26T15:49:33+00:00 أضف ردا
  • رابط مختصر

الأخ فؤاد محق فهو يتحدث عن الشطر الذي يتحدث عن التمرير بالقيمة أي باستخدام val أم الشطر الأخر فهو صحيح وهو لم يعلق عليه

0
MouhcineFD 2015-07-26T16:00:53+00:00 أضف ردا
  • رابط مختصر

لم أفهم

ممكن توضيح أكتر

2
عبد الرحمن أحمد 2015-07-27T09:41:19+00:00 أضف ردا
  • رابط مختصر

في سي شارب عندما تكرر متغير عبر دالة فهناك 3 خيارات

1- إما أن تمررها بشكل مباشر أي فقط تضع بين قوسي الدالة اسم المتغير وهذا يعتبر تمرير عادي

2- وإما أن تسبقه بالكلمة المفتاحية ref وهذا يسمى التمرير بالمرجع

3- و إما أن تسبقه بالكلمة المفتاحية val وهذا يعتبر التمرير بالقيمة

السائل سأل عن الفرق بين الثاني والثالث وأما أنا أجبته عن الفرق بين الأول والثاني والأخ فؤاد صوب جوابي وتحدث عن الثالث

0
MouhcineFD 2015-07-27T12:21:40+00:00 أضف ردا
  • رابط مختصر

فهمت الآن

:)

0
Zaineb_Mohammed 2015-07-27T09:53:38+00:00 أضف ردا
  • رابط مختصر

التمرير بالقيمة يعني أنك تأخذ نسخة من المتغير وتقوم بتمريره إلى دالةٍ ما.

هذا يعني أن المتغير الأصلي مازل محتفظ بقيمته الأصلية "الأمر أشبه بأخذ نسخة تحتوي على قيمة مطابقة لقيمة المتغيّر "

بينما التمرير بالمرجع فإنك تقوم بتمرير عنوان المتغير في الذاكرة(الأمر له علاقة بالمؤشرات)، وبالتالي فإن أي تغيير في قيمة ذلك المرجع فإنه يعني أنك تقوم بتغيير قيمة المتغير نفسه، وذلك لأنك تتعامل مع المحتوى الموجود في موقع ذاك المتغير في الذاكرة وليس مع نسخة منه.

0
Mohamed_Lamouri 2019-11-07T14:09:08+00:00 أضف ردا
  • رابط مختصر

هذه صورة توضح المفهوم

برمجة

مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.

25.7 ألف متابع

أطلق موقعك الإلكتروني في دقائق

صمم موقعك كاملا بالسحب والإفلات بدون خبرة برمجية، واحجز مكانك على الإنترنت.

أنشئ موقعك الآن

اقرأ أيضًا

  • جافا او سي شارب او php?
  • ما هي أهم التحديثات الجديدة في لغة برمجة سي شارب؟
  • ما هى لغة البرمجة سي شارب | C#
  • بدي اتعلم لغة بايثون
  • لماذا سي شارب والدوت نت؟

انسخ هذا الرابط:

تنبيه