לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 06-05-2010, 23:20
צלמית המשתמש של Idjo
  Idjo Idjo אינו מחובר  
 
חבר מתאריך: 05.05.02
הודעות: 6,840

זה בלוף טילים.

כל מה שנותנים Generics ב-C# זה syntactic sugar לפולימורפיזם.
תצטרך להיות יותר ברור מה כוונך.
אני משער ששנינו מסכימים כי Generics נותנים ליצור מעין מחלקה אבסטרקטית שפרטי המימוש שלה זה המחלקות בה היא משתמשת. אני לא יודע אם זה יכול להיכנס למילים שלך.


הטריק של זה שלא
עושים boxing (אגב, אתה יודע שבג'אווה כן יש autoboxing במקרה הזה?) הוא באמת
פולימורפיזם ב-C# בניגוד לבג'אווה, מאחר ובג'אווה הטיפוסים הפרימיטיביים הם שונים באופן
מהותי מכל המחלקות שיורשות מ-java.lang.Object, בעוד שבב-CTS של דוטנט (וזה כולל
את C#...) כל הטיפוסים (כולל "פרימיטיביים") יורשים מ-System.Object.
אולי לא הייתי ברור כי אני לא מבין איך נכנס לדיון הקטע של הירושה מ-Object. הירושה מ-Object בעיקר בעלת משמעות במקרה של boxing, וזה בדיוק מה שהסברתי שלא קורה.
אני אסביר שוב:
נגיד מגדירים מחלקה גנרית <Bla<T עם Data member מטיפוס T. אם עושים
<new Bla<object אז יוקצה לאובייקט מקום נוסף בגודל של pointer ואם עושים <new Bla<int יוקצה לאובייקט מקום נוסף בגודל של int לאסכון הערך.
העובדה כי int יורש מ-Object אינה משנה כלל להסבר הנ"ל.

זה שאין casting ב-C# מ-containers גנריים שונים זה העדר פיצ'ר ולא תכונה גאונית של
ה-Generics ב-C#, והיא אמורה להיות מתוקנת ב-C# 4.0. אני ממליץ לך לקרוא את הפוסטים
הרלבנטיים בבלוג של אריק ליפרט (ובכלל את הבלוג שלו).
אני מכיר את מה שיש בC# 4 אבל שים לב שבניגוד ל"פיצ'ר" של java, ניתן לעשות cast רק למחלקות יורשות או מחלקות אב, וזה רק אם הן מוגדרות כ-out או in (בהתאם או הפוך, לא זוכר). מיקרוסופט עשו הכל כדי לשמור עדיין על type safety.
תחשוב שאם יש לך מחסנית של T, לא הגיוני שתוכל לעשות cast למחסנית של Object כי אז ה-Push לא יהיה אtype safe ולא הגיוני שתוכל לעשות cast למחסנית של K היורש מ-T כי אז Pop לא יהיה type safe
.

הביטוי "בקריאה למתודות, אין casting שרץ מאחורי הקוד" אינו מובן.
הכוונה היא למשל כאשר למחסנית של T עושים Pop אז לא מתבצע cast מ-Object ל-T (אין בדיקה ואין פתח ל-CastException, הכל type safe).
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 06:58

הדף נוצר ב 0.06 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר