עבר הכרנו את הטיפוס Nullable (טיפ מספר 35).
ראינו בטיפ מספר 31 את הConstraintים המיוחדים
|
|
מה שמעניין הוא שאם נכתוב קוד כזה:
|
|
לא נוכל להעביר אליו טיפוס שהוא Nullable אם אחד הConstraintים המיוחדים מלמעלה נמצא.
מה קורה כאן?
הרי Nullable הוא struct בעצמו: אם נסתכל בMetadata שלו נראה:
|
|
ובכן, אם אכן יכולנו להעביר למתודה הזאת
|
|
טיפוס שהוא Nullable, זה היה אומר שNullable מקיים את התנאי where T : struct. ואז היינו יכולים לכתוב:
|
|
אבל מאחר ואין לכך משמעות, החליטו ליצור פאץ’ ולא לאפשר לConstraint לקבל את Nullable. אם תקראו בMSDN תראו שהתיאור הוא Non nullable value type.
סופ"ש לא Nullable טוב!