تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
dynamic كلمة مفتاحية جديدة في السي شارب
#1
بسم الله الرحمن الرحيم
وصلى الله على محمد وآله الطاهرين

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

dynamic : كلمة مفتاحيه جديدة في ال.NET 4 وهي من نوع static (static type) ,حيث يمكن أن تسند اليه أي نوع من البيانات ويتحقق من نوع البيانات اثناء وقت التنفيذ (at run time)  وليس اثناء وقت الترجمة (Compilation) لذا يمكن اعتباره كوسيط للبيانات الغير معروفة (لو صح التعبير) لحين وقت التنفيذ (أي يتعرف على نوع البيانات وقت التنفيذ).



الفائدة:
  • يغنيك عن الOverloading. (سنبين ذلك بمثال ان شاء الله)

  • يمكن أن تسند اليه أي نوع من البيانات (لأنه سيأخذ نوع القيمة المسندة إليه ,لو كان المسند إليه نص فسيكون نوع الdynamic نص)

  • يمكن أن تسند الى أي نوع من البيانات حسب المسند إليه. (لو كان المسند الى الdynamic نص فلا يجوز اسناده الى متغير رقمي)

  • يمكن أن تسند اليه و تسند الى الخصائص (set, get).

  • يدعم عمليات الجمع والقسمة والضرب و الزيادة والنقصان (++, - -).


ويكمن عيب الdynamic في أنه لا يفحص المسند اليه إلا وقت التنفيذ وهذا سيولد استثناءا اثناء التنفيذ اذا حدث خطأ ما في الاسناد.

الان سنعطي مثال لكل فائدة للdynamic وايضا مثال يبين عيب الdynamic



اولا: سنعمل مثال يبين الفرق بين الOverLoad واستخدام الdynamic بدلا من الOverLoad

على سبيل المثال سننشئ دالتين بنفس الاسم لجمع عددين الدالة الاولى لجمع عددين من نوع int والدالة الثانية لجمع عددين من نوع float وكيفية استدعائهما في البرنامج لبيان الOverLoad:



PHP كود :
private int Add(int num1,int num2)
 
       {
 
           return (num1 num2);
 
       }
 
 
       private float Add(float num1,float num2)
 
       {
 
           return (num1 num2);
 
       

والاستدعاء يكون بهذا الشكل:

PHP كود :
int a Add(24);
float f Add(3.4f4.4f); 


الان انظر الى هذه الدالة التي تؤدي نفس الغرض ولكن بدون تعريفها مرتين وانظر الى كيفية استدعائها ولا حظ الفرق بنفسك:

PHP كود :
    private dynamic Add2Num(dynamic num1,dynamic num2)
 
       {
 
           return (num1 num2);
 
       


الاستدعاء:
PHP كود :
        int res Add2Num(34);
 
           float fres Add2Num(4.5f5.5f);
     
   double dres Add2Num(4.53.3);
 
           string sres Add2Num("dd"" fff");
     
  object ob Add2Num(3" g"); 


كما تلاحظون أنه يمكننا أن نمرر للدالة أي نوع من البيانات نريد ونستدعيها في أكثر من مرة.


ثانيا : الاسناد إليه

مثال:


PHP كود :
        dynamic myint 10// int type System.Int32
 
           dynamic myfloat 12f// float type  System.Single
 
           dynamic mydouble 3.4 //double type  System.Double
 
           dynamic mystring "string" //string type  System.String
 
 
           MessageBox.Show(mydouble.GetType() + ""); // System.Double
 
           MessageBox.Show(mystring); // System.String 


ثالثا: الاسناد منه الى

مثال:

PHP كود :
dynamic myint 10;
 
int m myint// this will compile and execute 

رابعا:

مثال:


PHP كود :
    public int id
        
{
 
           set;
 
           get;
 
       


الاستدعاء:

 
PHP كود :
 this.id 3;
 
           dynamic myid this.id


خامسا : العمليات

مثال:


PHP كود :
        dynamic num1num2;
 
           num1 21;
 
           num2 20;
 
           dynamic nres num1 num2;
 
           MessageBox.Show(nres.ToString());
 
           num1++;
 
           MessageBox.Show(num1.ToString());
 
           num1--;
 
           MessageBox.Show(num1.ToString()); 


الان بقي لنا ان نبين عيب هذه الكلمة المفتاحية:

مثال:


PHP كود :
dynamic mystring "string";
int m mystring// This will compile but you get an exception at run time 

هذا السطر سيمرر بدون خطأ ولكن سيحدث اسثتناء اثناء التنفيذ .

هذا والحمد لله والصلاة والسلام على اشرف الخلق محمد وآله الطاهرين وأسألكم الدعاء لي ولوالدي

والسلام عليكم ورحمة اللله وبركاته
الرد }}}
تم الشكر بواسطة: sendbad100
#2
معلومة جديدة ومفيدة Smile
الله يبارك فيك ويعطيك العافية
الرد }}}
تم الشكر بواسطة:
#3
السلام عليكم

وفيك بارك الله شكرا على المرورSmile
الرد }}}
تم الشكر بواسطة:
#4
شكرا ............. ..... ..
الرد }}}
تم الشكر بواسطة:
#5
السلام عليكم ورحمة الله وبركاته

بارك الله فيك

وكتب اجرك
الرد }}}
تم الشكر بواسطة: Sajad


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  C# Dynamic Type Abu Ehab 1 1,980 30-09-17, 12:14 AM
آخر رد: sendbad100
  [توضيح] معاملات لغة السي شارب الشاكي لله 5 7,300 02-02-17, 04:25 AM
آخر رد: sendbad100
  [C#.NET] مقدمة في سي شارب 7 الإصدار الجديد C# 7 Features Previewed balugili 0 3,021 05-10-16, 03:04 AM
آخر رد: balugili
  [ 6.#C] - الجديد في سي شارب 6 الشاكي لله 2 3,751 02-06-16, 11:17 AM
آخر رد: CLARO
  [C#.NET] تحميل فيجوال سي شارب Omar 6.0 0 4,555 18-02-16, 06:45 PM
آخر رد: Omar 6.0
  الأعداد الضخمة BigInteger في سي شارب (جديد دوت نت 4) RaggiTech 0 2,903 11-10-12, 05:01 PM
آخر رد: RaggiTech

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


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