בפרק הקודם למדנו על שיפורים במנגנון Collection Initializers, הפעם נלמד על תוספות ב – Automatic Properties.

    Properties מאפשרים לבצע אינקפסולצייה למשתנים כך שניתן לבצע לוגיקה לפני שליפת או השמת נתונים, כדי לחסוך הרבה קוד שחוזר על עצמו ולכתוב משתנים לעטוף אותם במאפיינים שלא עושים באמת כלום, ניתן לכתוב Automatic Properties.

    בגרסה החדשה התווספו שני תכונות מעניינות חדשות, האחד הוא השמה עם ערך ראשוני כמו במשתנים, כך:

    Code Snippet
    public string Name { get; set; } = "Shlomo";

    בזמן קומפילציה, הקוד יעבור ל – ctor של המחלקה, הקומפיילר הוא חכם, אם יש כמה בנאים הוא יכתוב את קוד ההשמה בכולם, במידה וקראנו מאחד לשני הוא יעשה זאת רק באחד.

    אי אפשר לכתוב קוד כזה ב – struct מאותה סיבה שחייבים לאתחל את כל המשתנים.

     

    תכונה נוספת הוא היכולת להגדיר רק get ב – Automatic Properties, כמו הקוד הזה:

    Code Snippet
    public int Id { get; }

    בגרסאות הקודמות ניתן היה להגדיר מאפיינים רק עם get בתנאי שהיה להם מימוש, אחרת היינו חייבים להגדיר גם set, בדרך כלל היינו מגדירים private set.

    בזמן קומפילצייה המשתנה מאחורי הקלעים מוגדר כ – readonly, כלומר אנחנו יכולים לאתחל משתנה כזה רק ביצירה שלו או בבנאי.