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

سؤال عن static

بدأه Hisham_IT في 6 يوليو 2011 · 9 رد · 1,232 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته...

static.....احيانا اشعر انني فهمتها....و احيانا اخرى لا اعرف كيف اتعامل معها....الرجاء تلخيصها لي

اريد ان اعرف كيف تتعامل الذاكرة مع الحقول الستاتيكية static .....و كيف يتم تمييزها عن الحقول العادية؟

و مثى نستخدم static بالضبط؟

و شكرا لكم....

Currently working on ASP.net ..... come Back Soon

#2

STATIC كلمة تتعلق بالدوال و المتغيرات

اذا كانت مع المتغير هذا يعني ان المتغير مرتبط بالكلاس فقط ولا يرتبط بال INSTANCE المنشئ من الكلاس ولا يمكن الوصول اليه الا من اسم الكلاس فهو غير موجود داخل الانستنس

اذا كان مع الدالة يعني ان هذه الداله غير متعلقه بالانستنس ولا يمكن مناداتها الا من اسم الكلاس

قد لا تفهم من كلامي السابق بشكل تام لذلك اتوقع منك ان تناقش و تسأل بامثله

متى نحتاج ال STATIC حسنا

عندما يكون لدي كلاس مختص بالسيارات و اريد معرفه كم انستنس لسيارات لدي الان في البرنامج اثناء العمل

لكي احصل على هذه الاجابة ساضطر الي انشاء متغير ستاتك اسمية

STATIC INT CAR _COUNTER

و في كل مرة انشئ سيارة ازيد هذا المتغير واحد و اذا انهيت الانستنس انقص واحد

CARS.CAR_COUNTER++

فانا لا استطيع ان اعمل التالي

THIS.CAR_COUNTER++

لماذا؟؟

هذا بكل اختصار

وبرجاء عموم الفائدة

سبحان الله وبحمده *** سبحان الله العظيم

www.quraany.com

www.arabcs.com

#3

السلام عليكم ورحمه الله وبركاته

اخي بالنسبة للمتغيرات الساكنة Static هي متغيرات يمكن الوصول لها مباشرة بعد اسم الفئة وبدون انشاء اي كائن من تلك الفئة, طبعا يكون المتغير المعرف من هذا النوع Share اي اذا تم التغيير في قيمتة, كل اجزاء البرنامج تتعرف على هذا التغيير, شوف الروابط التالية للفائده

http://en.wikipedia.org/wiki/Static_variable

http://www.codeproject.com/KB/cs/codeconcepts.aspx

.:: Wish to become better and better ::.

#4

شكرا لكم كثيرا فقد استفدت و الحمدلله....بقي لي سؤال واحد

قد عرفت الفائدة من المتغير الستاتيكي و لكن...ما الفائدة من الميثود الستاتيكية؟؟؟!!!...و خاصة التي تكون من نوع void ؟؟؟؟

اعرف ان الميثود الستاتيكية هي واحدة على كل البرنامج و لكن اذا غيرنا البارميتر المرر اليها ...هل يعتبر انه صار لدينا ميثودتان..و هكذا.؟؟؟

و لماذا main method هي static ؟

Currently working on ASP.net ..... come Back Soon

#5

السلام عليكم ورحمه الله وبركاته

اخي الاجراء من نوع Static يمكن الوصول لها بعد اسم الفئة بدون انشاء كائن منه, فغالبا الدوال الساكنة تكون دوالة خدمية, فمثلا الفئة Math تحوي Sin,Cos وغيرهما فيمكن حساب الجيب والجيب تمام للزاوية ولكن اذا كانتا ليست ساكنة فستضطر لإنشاء كائن من الفئة قبل الاستخدام وهناك امثلة كثيرة مثل دوال الـ File,Directory فأغلبها ساكنة Create,Delete .. الخ

اما الدالة Main ساكنة وهذا واحد من الاسئلة التي من المفروض كل واحد يسأل نفسه فيها؟!! والسبب ليتم الوصول للدالة بدون انشاء كائن من الفئة Program وهي تعتبر EntryPoint للـ Assembly

1

.:: Wish to become better and better ::.

#6

شكرا لك اخي v helper.....

ما فهمته الان ان static method نستخدمها فقط للسهولة....فقط لكي نتجنب تشكل object

فلو كانت الميثود sin مثلا الموجودة في الكلاس math غير ستاتيكية >>>>>فلن يفرق اي شيء الا انك ستنشأ اوبجكت و منه تستدعي الميثود sin ...اما طريقة عمل الميثود فهي نفسها...

اذا كان في شي غلط...صحح لي رجاءا.....

شكرا مرة اخرى...

Currently working on ASP.net ..... come Back Soon

#7
Hisham_IT كتب:

شكرا لك اخي v helper.....

ما فهمته الان ان static method نستخدمها فقط للسهولة....فقط لكي نتجنب تشكل object

فلو كانت الميثود sin مثلا الموجودة في الكلاس math غير ستاتيكية >>>>>فلن يفرق اي شيء الا انك ستنشأ اوبجكت و منه تستدعي الميثود sin ...اما طريقة عمل الميثود فهي نفسها...

اذا كان في شي غلط...صحح لي رجاءا.....

شكرا مرة اخرى...

سلام عليكم ورحمه الله وبركاته

اخي هشام لقد واجهتني مشكله من فتره وكنت لا استطيع حلها في مشروع تخرجي

ولكن حلها كان ف كلمه استاتك

ال static method ليست للسهوله فقط ولكن عندما تاخد اكتر من اوبجت

لنفس الكلاس مثلا من كلاسات مختلفه وتعتمد علي بعضها ستضظر ل استخدام كلمه استاتك

لان الاوبجت الجديد لا ينفع معه اعتماد الكلاسات علي بعضها

مثلا تريد عمل ميثود تستقبل منك برامتر معينه لرسم اشكال معينه (مربع معين قوس دائره سهم ... )

وكل شكل من الاشكال له كلاس منفصله وكلهم ينادوا علي ميثود واحده في كلاس اخري

ولكنك تريد ان ترسم الاشكال كلها بعد ارسال كل الاشكال البرامتر للميثود

مثل امر البلوت في الماتلاب لرسم الاشكال مع بعض في مكان واحد

ستضطر ل استخدام ميثود استاتك لكي تحتفظ بقيتها ف الميموري

بحيث هذه الميثود كل الكلاسات للاشكال تبعت لها البرامتر

وبعد اخر شكل يتم الرسم

يا ريت تكون فهمت قصدي

بس الفكره لو عموما لو كان في اكتر من كلاس معتمده علي بعضها

هتحتاج تفكر ف استخدام استاتك ميثود او استاتك فاريبول

#8
zekus12 كتب:

سلام عليكم ورحمه الله وبركاته

اخي هشام لقد واجهتني مشكله من فتره وكنت لا استطيع حلها في مشروع تخرجي

ولكن حلها كان ف كلمه استاتك

ال static method ليست للسهوله فقط ولكن عندما تاخد اكتر من اوبجت

لنفس الكلاس مثلا من كلاسات مختلفه وتعتمد علي بعضها ستضظر ل استخدام كلمه استاتك

لان الاوبجت الجديد لا ينفع معه اعتماد الكلاسات علي بعضها

مثلا تريد عمل ميثود تستقبل منك برامتر معينه لرسم اشكال معينه (مربع معين قوس دائره سهم ... )

وكل شكل من الاشكال له كلاس منفصله وكلهم ينادوا علي ميثود واحده في كلاس اخري

ولكنك تريد ان ترسم الاشكال كلها بعد ارسال كل الاشكال البرامتر للميثود

مثل امر البلوت في الماتلاب لرسم الاشكال مع بعض في مكان واحد

ستضطر ل استخدام ميثود استاتك لكي تحتفظ بقيتها ف الميموري

بحيث هذه الميثود كل الكلاسات للاشكال تبعت لها البرامتر

وبعد اخر شكل يتم الرسم

يا ريت تكون فهمت قصدي

بس الفكره لو عموما لو كان في اكتر من كلاس معتمده علي بعضها

هتحتاج تفكر ف استخدام استاتك ميثود او استاتك فاريبول

جزاك الله خيرا......لو ترفق لي مثال لاكون من الشاكرين

Currently working on ASP.net ..... come Back Soon

#9

السلام عليكم ورحمه الله وبركاته

اخي المشكلة مش مشكلة سهولة!! انما اتت للتوفير, لأنه مافي داعي عند استدعاء اي دالة انشىء كائن ونحن اصلا في غنى عنه, ما علينا الا تعريفها كـ Static وكما ذكرت سابقا دوال الـ Static غالبا ما تكون دوال خدمية!!

.:: Wish to become better and better ::.

#10

المثال الي قصدي عليه برنامج مثلا ياخد منك برامتر معينه

لاشكال مختلفه مثال مستطيل ونجمه سداسيه

ومثلا كل شكل من الاشكال له كلاس مستقله

والمراد هوا ان ترسل كل كلاس البرامتر لميثود وبعد ارسال كل البرامتر

يتم رسم الاشكال مع بعض في فورمه البلوت

لو كل كلاس ارسلت البرامتر من غير م تكون الميثود استاتك او المتغيرات

مثل عدد الاشكال المراد رسمها او مصفوفه queue التي تخزن نقط البرامتر كلها قبل

البدء ف الرسم

سيتم رسم كل شكل لوحده في فورمه

اما بجعل الميثود استاتك وعند انتهاء الاشكال التي تنادي علي ميثود البلوت

سيتم عمل paint مره واحده لكل الاشكال وتظهر الفورمه مره واحده

فيها كل الاشكال المراد رسمها معا

00010.png

111110.png

011110.png

يا رب يكون قصدي وصلك كويس

الفكره عموما ان لو حاجه معتمده علي بعضها

احتمال تحتاج تخزنها ف الميموري باستخدام كلمه استاتك

لان مع كل انستنت جديد للكلاس

المتغيرات هتتغير مش هيكون في قيمه قديمه

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