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

المميزات الجديدة في لغة Optional Parameters and Named Arguments – C# 4.0

بدأه Xhack في 11 مايو 2010 · 6 رد · 2,206 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أولا : الحقول الإختيارية (Optional Parameters)

تعتبر ميزة البراميترات الاختيارية او ( Optional Parameters) غير جديدة على مبرمجي الفيجوال بيسك حيث تعطيك هذه الميزة حرية الاختيار بين أرسال قيمة الى البراميترات او عدم إرسال قيمة وبذلك يتم أخذ القيمة الافتراضية التي تم تحديدها مسبقا عند إنشاء الدالة (Method) لن أطيل عليكم سوف أبدء مباشرة باعطاء أمثلة عنها

كيف يمكن إنشاء براميترات إختيارية (Optional Parameter)

يتم إنشاء الحقول او البراميترات الإختيارية كما هو موضح في الشكل التالي

optional_parameters_p1.png

كما ترى وبكل بساطة فان الحقل الإختياري يجب أن يأتي بعده مباشرة قيمة إفتراضية وبذلك تخبر المترجم (Compiler) بأن هذا الحقل حقل إختياري كما هو موضح في الصورة التالية

optional_parameters_p2.png

كما ترى فإن البراميترات أو الحقول الإختيارية يتم وضعها بين علامتي [] وذلك لدلالة على أنها حقول إختيارية .

المثال كامل

class Program
{
static void Main(string[] args)
{
Add(10);
Add(10, 5);
Add(10,5,5);
}
static void Add(int A, int B = 0,int C=1)
{
Console.WriteLine("The Value Of A={0},B={1},C{2}", A, B,C);
}
}

ثانيا : الحقول ذات الاسماء المعلنة (Named Arguments)

في الحقيقة أرهقني مصطلح (Named Arguments) من ناحية التعريب ولذلك أطلقت عليه إسم الحقول ذات الأسماء المعلنة. والغرض منها يكمن في إمكانية إعلان إسم الحقل الإختياري وتحديد قيمته بغض النظر عن موقعه في الدالة.

في الشفرة السابقة يوجد هنالك حقلان إختياريان الأول إسمه (B) والثاني إسمه (C) والان لنفترض اني اريد ان أرسل قيمة (C) فقط بدون إرسال قيمة (B) هل هذا ممكن ؟

طبعا هذا ممكن مع (Named Arguments) إنظر الى الشكل التالي

named-arguments-p1.png

كما ترى فإن العملية بسيطة جدا كل ماعليك فعله هو تحديد إسم الحقل الذي قمت بتعريفه في الدالة ثم إرسالة القمية التي تريدها

أمثلة أخرى

named-arguments-p2.png

وكما هو موضح في الاعلي فإن موقع الحقل لايهم في حالة ( Named Arguments)

الان تخيل معي ان لديك دالة (Method) يوجد بها أكثر من حقل إختياري ولنقل على سبيل المثال عشرة حقول إختيارية وأنك في بعض الأجزاء من الكود تريد أن ترسل قيمة الحقل الاخير فقط او انك تريد إرسال قيمة حقلين فقط من العشرة وهكذا ؟؟؟

طبعا بدون وجود ميزة (Named Arguments) فسوف تظطر الى كتابة جميع الحقول ولكن من حسن حظنا فان هذه الميزة موجودة في لغة السي شارب (C#).

قواعد يجب أن تتبع

• يجب أن تكتب الحقول الإختيارية بعد الحقول الأجبارية (Required Parameters) والعكس غير مقبول والا فإن المترجم سوف يظهر رسالة خطأ تخبرك بان الحقول الإختيارية يجب ان تظهر بعد الحقول الإجبارية.

• لاتقم أبدا أبدا بتغير أسماء الحقول الإختيارية بعد إستدعائك لهذه الدالة عند إستخدام (Named Arguments ) والسبب في ذلك أن المترجم سوف يظهر رسالة خطأ مفادها بأن إسم الحقل غير موجود وتخيل معي المعاناة لو أنك قمت بإستدعاء هذه الدالة في أمكان كثيرة من برنامجك لأنك سوف تطظر الىتغيره في كل مكان إستدعاء.

named-arguments-p3.png

• لايمكن إستخدام (Named Arguments) الى إذا كان هنالك ( Optional Parameters)

نقطة اخيرة

قد يسئل البعض ويقول لقد ذكرت في هذا الموضوع كلمة ( Parameters) بعد ذلك قمت بذكر كلمة (Arguments) إذا مالفرق بينهما

جواب هذا السؤال في الصورة التي بالأسفل

named-arguments-p4.png

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

خلاصة

أتمنى في نهاية الحديث أن تكون الصورة واضحة لدى الجميع عن هذه الميزة الجديدة في لغة السي شارب وهي الحقول الإختيارية وطبعا كما ذكرت سابقا هي ليست بجديدة على مبرمجين الفيجوال بيسك ولكن الجديد هنا هو الحقول ذات الاسماء المعلنة وقمت بإعطائك بعض القواعد الهامة التي يجب أن تكون في الحسبان اثناء البرمجة والفرق بين كلمتي (Parameters) و ( Arguments) .

واخير وليس أخرا اتمنى ان اكون قد وفقت في الطرح

والله أعلم

5
#2

في الحقيقة لغة السي شارب لغة قوية جدا وأتوقع لها أن تصبح اللغة الأولى على مستوى اللغات الأخرى

شكرا على الشرح الممتع

بالتوفيق

قولوا لا اله الا الله تفلحوا

ومن يبتغي غير الاسلام دينا فلن يقبل منه وهو في الاخرة من الخاسرين- صدق الله العظيم

#3

اشكرك اخي وجزاك الله العلم النافع دوماً

#4

ماشاء الله على شرحك الرائع، مختصر جداً وواضح.

بارك الله فيك.

#5

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

شكرا اخي على المجهود الرائع, تمنياتي لك بالتوفيق ..

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

#6

السلام عليكم

جزاك الله خيرا أخي ونفعنا بك

#7

اكرمك الله

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