DCSIMG
C# 4.0 Part 3 - Behind The Scenes Part 1 - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

C# 4.0 Part 3 - Behind The Scenes Part 1

 

שני הפוסטים הקודמים עסקו בהבנה איזה שימוש אפשר לעשות עם ה - dynamic.
הראשון היה הדגמה פשוטה של היכולות בעוד השני הדגים את הדוגמא הפופולרית (שכולם כותבים אבל אף אחד לא מדגים) בכל המאמרים על C# 4.0 התוכנית GetCalculator.
 
 
כעת ננסה להבין מה מתרחש מאחורי הקלעים.
 
למעשה ההבנה מה מתרחש מאחורי הקלעים, מתחלקת לשניים
 
הראשון - מה קורה כשעושים השמה לתוך dynamic.
השני - מה קורה כשמפעילים מתודות או ניגשים למאפיינים של אותו dynamic.
 
הפוסט הזה יעסוק בשאלה הראשונה, הפוסט הבא יתחיל לענות על השאלה השנייה.
 
 
אז לפני הכל - השאלה שנשאלת, האם באמת קיים טיפוס חדש בשם dynamic ?
 
והתשובה היא לא, אין חיה כזאת ב - runtime שנקראת dynamic, מפתיע לא ?
 
שימו לב לקוד הבא:
 

    int i = 10;

    object o = new object();

 

    dynamic i1 = i;

    dynamic o1 = o;

 
 
שימו לב לקוד שמתרנדר מאחורי הקלעים:
 

    int i = 10;

    object o = new object();

 

    object i1 = i;

    object o1 = o;

 
לא מאמינים ? שימו לב לקוד ה - IL.
 
IL dynamic
 
 
יש כאן תהליך boxing רגיל שעובר על כל משתנה מסוג int כששמים אותו ל - object.
 
שימו לב לקוד הבא:
 

    static dynamic DynamicDemo(dynamic d1)

    {

        return null;

    }

 
 
הנה התוצאה אחרי קומפילציה:
 

    [return: Dynamic]

    private static object DynamicDemo([Dynamic] object d1)

    {

        return null;

    }

 
 
לסיכומו (החלקי) של עניין, אין טיפוס בשם dynamic, יש רק object, ו - attributes שאומר ל - CLR, שכאן צריך לחזור ולהתקבל אובייקט דינמי.
 
 
השאלה היותר מסקרנת, מה קורה כשמנסים להפעיל פעולות על ה - dynamic, וכמו שראינו זה בסך הכול object, ועל כך בפוסט הבא (שיהיה בעזרת ה' מחר.)
פורסם: Jun 20 2009, 09:31 PM by Shlomo | with 2 comment(s)
תגים:, , ,

תוכן התגובה

שלמה גולדברג כתב/ה:

אז בפוסט הקודם ראינו שלמעשה אין ב - Runtime טיפוס dynamic, וכל מה שאנחנו משימים לתוך dynamic עובר להיות

# June 21, 2009 12:48 PM

שלמה גולדברג כתב/ה:

דברנו מספיק על dynamic, הגיע הזמן להתקדם לתכונות נוספות וחשובות של C# 4. הדבר היחיד שנשאר בנושא של dynamic

# June 24, 2009 8:37 AM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 7 and 5 and type the answer here:


Enter the numbers above: