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

الفرق بين الكودين

مغلق
بدأه Cer في 23 أغسطس 2006 · 5 رد · 626 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هحط السؤال ده لتحريك النقاش ده في المنتدي

(العملية نايمه خالص :s :s )

ايه الفرق بين :

int x = new int();
x = 3;
int y = new int();
y = x;
y = 4;
MessageBox.Show(x.ToString());

وبين :

Class1 x2 = new Class1();
x2.MyInt = 3;
Class1 y2 = new Class1();
y2 = x2;
y2.MyInt = 4;
MessageBox.Show(x2.MyInt.ToString());

باعتبار Class1 كده :

public Class Class1
{
	public int MyInt;
}

يا رب يبقي فيه تجاوب وحد يتكلم

(علي فكرة النقاش ممكن يتطور لو احنا عايزين ونحوله لكلام في ال Memory management وازاي اكتب كود كويس وكده يعني)

Have fun ;) ;)

#2

يمكن الاول افضل، على الاقل لان Dot Notation للاستدعاء واللذي ربما يستهلك ذاكرة اكبر.

لاحظ

x = 3;

و

x2.MyInt = 3;

تم تعديل هذه المشاركة بواسطة abd_albaset في 24 أغسطس 2006 في 07:01

#3
abd_albaset كتب:
يمكن الاول افضل، على الاقل لان Dot Notation للاستدعاء واللذي ربما يستهلك ذاكرة اكبر.

لاحظ

x = 3;

و

x2.MyInt = 3;

الإجابة غلط يا مان

Sorry

Have fun ;) ;)

#4

في الاول انت عملت Refrance Variable من Int Structure وبعدين حطيطلة قيمة وناديت بيه ToString ودي معمولة بالBoxing

في التاني انت عملت Member Varible اسمة MyInt وبعدين عملت Object وناديت بية الMyInt وحطيطلة قيمة 3 وبعد كده عملت Object y وساويتة بX2 وحطيت قيمة تانية ل MyInt

صح كده ولا في حاجة تانية

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

#5

كلامك صح يا أخ Hock

بس لو حد جرب الكود وطلع ال result هيفهمها علي طول

الشكل الظاهري لل 2 method دول إنهم بيطلعوا نفس القيمة

بس هي مش كده

ال Method الأولي بتدي لل x قيمة وال y نفس قيمة ال x

بعد كده تخلي ال y ب 4 ... بس ده مش هيأثر علي ال x

فلو طلعت قيمة ال x هتلاقيها = 3 لإنه Value type عادي

ال Method التانية بتختلف في إنك بتستخدم reference لل class موجود في كلاس

ال x وال y هم reference لنفس ال class فبالتالي أي تغيير في قيمة ال MyInt عن طريق ال x أو ال y هيغير نفس القيمة أو نفس الأصل مش فارقه

فهيطلع x = 4

يعني :

x2.MyInt = 3;

كده خلي ال MyInt =3

y2.MyInt = 4;

كده غير ال MyInt = 4

فلما يعمل كده

MessageBox.Show(x2.MyInt.ToString());

يبقي هو عايز يظهر ال MyInt عن طريق ال reference اللي اسمه x

طب قيمة ال MyInt كام ؟؟

MyInt = 4 حسب آخر كلام

بس هي ده الفكرة

طب سؤال تاني : ايهما الأفضل بالنسبة لل Memory ؟؟ استخدام ال Value type ولا ال Reference type ؟؟؟

Have fun ;) ;)

#6

بالنسبة للRefrance type انت شغلك كلة مع الHeap يعني الStack مجرد مؤشر علي المكان في الHeap انما الValue بتبقي كلها في الStack يعني بالنسبة للسرعة الValue Type اسرع

واعتقد بالنسبة للMemory الValue اقل في حجز المساحة لانك بتحجز الStack بس

وطبعا في حاجات ماتنفعش الا Refance زي Objects وArrays وهكذا

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

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

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