تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Colon with passing paremeters
#1
السلام عليكم ورحمة الله وبركاته


في سي شارب 4 ، مع ظهور الكثير من الميزات امثال الكلمات المفتاحية dynamic و async, await ظهرت لنا ايضا ميزة جديدة وهي الColon with passing paremeters

الColon يقصد بها النقطتين الرأسيتين (:)

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


PHP كود :
void Test(string nameint age)
        {
        }

        private 
void Form1_Load(object senderEventArgs e)
        {
            
Test(name"Mohammed"age220);
        } 


فائدتها بسيطة وهي : اعطاء قيمة للبارميتار بالاسم .



يعني لما اقول age: 22

كاني اتحدث مع المترجم واقول له : "يا ايها الCompiler العزيز ، اعطي البارميتار المدعو age قيمة رقمية وهي 22 "


وذلك اعطى ميزة اعادة ترتيب البارمترات ، حيث لاتوجد مشكلة لو قمت بقلب البارمترات السابقة من :

PHP كود :
void Test(string nameint age)
        {
        }

        private 
void Form1_Load(object senderEventArgs e)
        {
            
Test(name"Mohammed"age22);
        } 

الى

PHP كود :
void Test(string nameint age)
        {
        }

        private 
void Form1_Load(object senderEventArgs e)
        {
            
Test(age22name"Mphammed");
        } 


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


* اذن عرفنا الColon تستخدم لأسناد قيمة للبارميتار ليس على حسب الترتيب بل على حسب اسم الباريمتار (فرأينا كيف اسندنا قيمة للبارميتار age قبل الاسناد الى البارميتار name مع ان الدالة تريد ان يتم اسناد name اولا ، ولكن اخترقنا هذا الحاجز لاننا قمنا بعمل مايسمى

Passing Arguments by Name

وليس

Passing Arguments by Position



--



الفائدة الاخرى لإستخدام الColon هي جعل الكود اكثر وضوحا ، سأضرب مثال بسيط .. وهو مثال لدالة وظيفتها قسمة الاعداد

وكما نعرف ان عملية القسمة تحتاج شيئين : المقسوم (dividend) و المقسوم عليه(divisor)


انظروا هذا الكود

PHP كود :
private void Form1_Load(object senderEventArgs e)
        {
            
Div(510);
        } 


الان اريدك ان تخبرني من هو المقسوم ومن هو المقسوم عليه في الكود السابق ؟؟؟؟؟

الامر محير جدا ولايمكنك ان تعرف الا بوجود كود دالة Div حتى تعرف ترتيب البارميترات.


هاااه عجزت ؟؟؟


اساعدك ؟؟؟


حسنا ياصديقي سأساعدك


ساقوم باستخدام الColon :

PHP كود :
private void Form1_Load(object senderEventArgs e)
        {
            
Div(dividend5divisor10);
        } 




الان اصبح الامر واضحا وضوح الشمس ، وتذكر انت لحد الان ماشفت كود الدالة لكن بالتأكيد عرفت من هو المقسوم ومن هو المقسوم عليه .






وهاهو كود دالة Div :

PHP كود :
int Div(int dividendint divisor)
        {
            return 
dividend divisor;
        } 


تخيل معي لو انا ما استعملت الColon ولم اقم باعطائك كود دالة Div لكنت الان تضرب راسك بالحيطان حتى تعرف من هو الdivident ومن هو الdivisor


هذه فائدة كبيرة للColon وهي جعل الكود اكثر وضوحا وفهما للمشاهد دون الحاجة الى رؤية كود الدالة و دون الحاجة الى نقل الكود الى الفيجوال ستوديو ورؤية التلميح الذي يظهر :
< you don't need to see this if you using Colon



انتهى
الرد }}}
تم الشكر بواسطة: Sajad , ali.alfoly , sendbad100
#2
السلام عليكم

جزاك الله خيرا فعلا ميزة رائعة ويستفاد منها الكثير

اضيف ايضا انها تسمى بـ Named Argument واضيف ايضا انه يمكن ان لا نسمي الباراميتر الاول ونسمي الثاني لكن العكس لا يسمح بها من قبل الـCompiler

توضيح:

PHP كود :
var res sub(5,num2:  3); // Pass
var res1 sub(num124); //Error 

تحياتي
الرد }}}
تم الشكر بواسطة: الشاكي لله , sendbad100
#3
جزاك الله خيرا اخي محمد
موضوع ممتاز
شغالين علي الـ C# اليومين دول هههه الله يبارك لكم
الرد }}}
تم الشكر بواسطة: Sajad , الشاكي لله


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم