סי שארפ – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
אין תקציר עריכה
Idovi (שיחה | תרומות)
שורה 117:
 
===ירושה===
בשפת #C כל מחלקה יורשתיכולה לרשת ישירות ממחלקה בודדתאחת בלבד, וישנה אפשרות לממש מספר ממשקים (Interfaces): מחלקות הכוללות מתודות מופשטות בלבד, ומשמשות כחוזים המכריחים את המחלקות היורשות לממש את ה[[פונקציה (תכנות)|מתודות]] המוגדרות בממשק. ב-#C קיימת ירושה ציבורית בלבד; לא ניתן להחיל הגבלות גישה על מחלקות האם.
 
סוגים שונים של מחלקות:{{הערה|1=http://msdn.microsoft.com/en-us/library/vstudio/ms173150.aspx}}
שורה 137:
C#{{D}} מאפשרת העמסת מתודות, שהיא האפשרות לכתוב מתודות בעלות שם זהה, וחתימה שונה (רשימת הפרמטרים צריכה להיות שונה בטיפוסי הפרמטרים או במספרם). כמו כן ניתן ליצור מתודה עם מספר לא ידוע של פרמטרים (באמצעות מילת המפתח params והגדרת מערך ברשימת הפרמטרים. (לדוגמה: (public void FunctionName(params String[] str1). גם ניתן ליצור ערכי ברירת מחדל בפרמטרים של מתודה באופן דומה לכתיבה ב-C#{{D}}.
 
למחלקה בשפה ניתן לכתוב בנאי (Constructor) המופעל כאשר נוצר מופע, והורס (Destructor) המופעל לפני מחיקת המופע. ההורס קורא בעקיפין למתודה מסיימת (Finalize). כברירת מחדל נוצרים בנאי והורס ריקים. ניתן ליצור מספר רב של בנאים באמצעות העמסה. לרובייעודה איןשל שימושמתודת ה ל-Finalize, שכןהוא לאשחרור ידועמשאבים מתישהם הואUnmanaged ייקרא- כלומר משאבים שאינם מנוהלים על ידי מנגנוןה CLR. למתודת ה Finalize עלולה להיות השפעה גדולה על ביצועי התוכנה מאחר והיא נקראת בתהליך [[איסוף זבל (מדעי המחשב)|איסוף הזבל]] אשר משהה עד לסיומו את ה[[Thread]]-ים המנוהלים ע"י ה CLR.
 
===הסתרה וחלוקה למודולים===
שורה 154:
מאפיין הוא שיטה מיוחדת הנקראת Accessor (מאפשר גישה) שמתנהגת מבחינה תחבירית כמשתנה חבר ותפקידה לאפשר גישה לשדות פרטיים.
 
בדומה למוסכמה השכיחה בג'אווה לכנות מתודות שתפקידן השמה ואחזור של ערכים get ו-set בהתאמה ולאחריהן שם התכונה. אומץ רעיון ה"מאפיינים" מ-[[Visual Basic]] כדי להקל על השמה ואחזור שדות פרטיים. בתפיסה זו מאפיין מורכב משדה ושיטות הפועלות עליו: האחת קוראת (getter) והאחרת כותבת (setter). כל שנדרש להגדיר הוא הגבלת ההרשאה (Access Modifier) על פי רעיון הכימוס, לקבוע מה יהיה הערך המוחזר ולקבוע את שם המאפיין. מימוש המאפיין מתנהג כפונקציה חברה לכל דבר, כך ניתן לשלוט בערכים המושמים והמאוחזרים בזמן הריצה. בכל פעם שתתבצע גישה למאפיין היא תופנה ל-get וכל פעם שיוצב ערך במאפיין תתבצע הפעלה של set. כמו כן, החל מגרסה 2.0, ניתן לקבוע רמות הרשאה שונות ל-get ול-set (כך, לדוגמה, ניתן לקבוע הרשאת גישה ציבורית לאחזור get ולהגביל את השמת הערך set לפרטיתל"פנימי מוגן" כך רק מחלקות יורשות יוכלו לשנות את השדה - במקרה כזה המחלקה תקרא Immutable דהיינו לא ניתנת לשינוי. או להסיר את ההשמה לחלוטין, במקרה כזה יקרא המאפיין "קריאה בלבד"). מעבר לעובדה שהמאפיינים מהווים [[אבסטרקציה (מדעי המחשב)|רמת הפשטה]] למשתמש, הם הופכים את השדה לשדה חכם (smart field) שמאפשר לבצע פעולות נוספות בעת השמה או אחזור, כמו בדיקות תקינות או חריגה או לבצע אתחול עצל, שהוא אתחול בזמן שימוש בשדה ולא בזמן יצירת המחלקה, וכן פעולות לוגיות אחרות.
 
<syntaxhighlight lang="csharp">