בוקר טוב,
אמרנו באחד הטיפים הקודמים שאי אפשר לעשות Constraint מהסוג
|
|
לפעמים אנחנו רוצים שType שנקבל יהיה דווקא value type ולא reference type
נוכל לכתוב את זה כך:
|
|
שימוש אפשרי:
|
|
הפונקציה הזאת מקבלת כמעט כל value type ומשכפלת את הערך שלו.
למשל
|
|
למה זה עובד? מאחר וכאשר מעבירים value type לפונקציה מועבר העתק שלו, הפונקציה מחזירה עותק של הערך שקיבלה.
באופן דומה קיים Constraint מקביל:
|
|
המשמש כדי לדרוש שמחלקה תהיה reference type. (שימו לב, גם interfaceים, delegateים, Arrayים וכו’ נחשבים reference type).
למה זה טוב? כפי שציינו, כאשר מעבירים value type לפונקציה, מועבר עותק שלו. פעולה זו עשויה להיות כבדה, לכן לפעמים נרצה להכריח פונקציה לקבל רק reference types שאינם דורשים העתקה של כל האובייקט.
עוד סיבה אפשרית להשתמש בזה היא מאחר ובמידה ומועבר value type לא נוכל להשתמש במילה השמורה as, ראו גם טיפ מספר 12.
שבוע גנרי טוב