מדריך C# מונחה עצמים

מדריך C# – תכנות מונחה עצמים: קבועים ( Constants ו- Readonly)

‏ • John Bryce

Constants

constants (קבועים) הם תאים בזיכרון אשר מכילים ערך קבוע שאינו ניתן לשינוי (בניגוד למשתנים שמטבעם כן יכולים להשתנות). קבועים ב – NET. למעשה מוגדרים אוטומטית כ- static (אין צורך לציין זאת במפורש), הדבר אומר שהגישה אליהם היא דרך שם המחלקה ולא דרך אובייקט.

הגדרת const:

  class MyConst
  {
    public const double PI = 3.14159;
  }

גישה ל – const:

   Console.WriteLine(MyConst.PI);

Readonly

readonly (קריאה-בלבד) הינו משתנה קבוע, אשר בניגוד ל- const אינו מוגדר כ- static אלא מוגדר עבור כל אובייקט. זאת אומרת שהערך שלו יכול להיות שונה בכל מופע של האובייקט, אך מרגע שנוצר האובייקט לא ניתן לשנות אותו. ניתן להכניס לתוכו ערך בשורת ההצהרה עליו (כלומר אתחול כמו const) ו / או בבנאי (c'tor) בלבד. לאחר האתחול ובניית המופע של המחלקה לא ניתן עוד לשנות את ערכו של משתנה זה.

להלן דוגמא להגדרת readonly והשמת ערך בבנאי.

Light bulb שימו לב שהפונקציה ()ChangeValue תגרור שגיאת קומפילציה כי ניתן לבצע השמה רק באתחול או בבנאי:

class TestReadonly
  {
    //read-only data-member:
    private readonly int val;

    //read-only Property:
    public int Val
    {
      get { return val; }
    }

    //Ctor:
    public TestReadonly(int v)
    {
      val = v;
    }

    //Method:
    public void ChangeValue()
    {
      val = 10;  // !שגיאת קומפילציה
    }
  }
 

readonly error

Light bulbשימו לב שבד"כ למשתנה read-only יהיה property שהוא read-only (כלומר, ללא חלק של set), מיכוון שלא ניתן לשנות את ערך המשתנה לאחר שהוא כבר נוצר ואותחל.

 

דוגמא לגישה למשתנה readonly – הגישה היא דרך שם האובייקט (בניגוד ל – const). ניתן לשים לב שבכל אובייקט יש ערך אחר למשתנה:

      TestReadonly t1 = new TestReadonly(10);
      TestReadonly t2 = new TestReadonly(12);

      Console.WriteLine(t1.Val);
      Console.WriteLine(t2.Val);

תגיות: , ,

ליאור זמיר

כיום אני ה- Webmaster של תוכנית החדשנות של HPE Software.לפני כן, הייתי מנהל תחום Webmaster ומרצה בכיר בג'ון-ברייס (במשך 9 שנים) בקורסים לפיתוח ותיכנות באמצעות Microsoft .NET, מולטימדיה, בניית אתרי אינטרנט ואינטראנט. פיתוח הדרכה ומתן ייעוץ טכנולוגי.

תגובות בפייסבוק