לעיתים נרצה להשתמש במידע שאין לשנותו, כגון: הקבוע המתמטי PI, מספר זיהוי, תאריך לידה, שם ונתיב של קובץ מידע, קובץ הגדרות האפליקציה וכו'.
#C מתירה להשתמש בחברי מחלקה קבועים ( Constants Data Members) וחברי מחלקה לקריאה בלבד (Read only Data Members).
לעיתים נרצה להשתמש במידע שאין לשנותו, ערכו של הקבוע המתמטי PI ידוע כבר כמה
מאות (ויש שיגידו אלפי שנים),PI מייצגת את היחס הקבוע בין היקף המעגל לקוטרו.
במחלקה Circle, לדוגמה, ניעזר בקבוע זה על מנת לחשב את שטחו של המעגל או את היקפו.
במחלקה Person, לדוגמה, נגדיר שדה המייצג את מספר הזהות של אדם.
מספר הזהות של אדם מלווה אותו מרגע הולדתו ועד ליום מותו, מספר זה אמנם חייב להיות שונה מאדם לאדם, אולם הוא קבוע.
יש הבדל בין שתי הדוגמאות הללו:
בדוגמה הראשונה PI הוא קבוע שערכו משותף לכל האובייקטים מהמחלקה Circle .
בדוגמה השנייה, מספר הזהות הוא קבוע ברמת האובייקט בלבד.
#C מתירה להשתמש בחברי מחלקה קבועים (Constants Data Members) וחברי מחלקה לקריאה בלבד (Read only Data Members).
הקבועים הם ברמת המחלקה, דהיינו, הם תמיד יהיו סטטיים (Static const).
משתני מחלקה לקריאה בלבד הם קבועים ברמת האובייקט, דהיינו, כל אובייקט יכול להכיל ערכים שונים לאותה התכונה. הגדרת קבוע (const data member)
תכונה המוגדרת כקבועה (Const Data Members) מוגדרת באמצעות המילה השמורה const.
קבוע חייב להיות מאותחל במעמד הגדרתו, דהיינו, הקומפיילר דורש לקבוע ערך על מנת לעבור קומפילציה בהצלחה. מרגע שאותחל, לא ניתן לשנותו עוד.
תכונה המוגדרת כ-Const היא תמיד סטאטית ולכן נוצרת ומאותחלת בזמן טעינת התוכנית. תחביר:
בשורה 6 התכונה PI הוגדרה בקבועה באמצעות המילה השמורה const ואותחלה במעמד הגדרתה.
הגדרת תכונה לקריאה בלבד (read-only data member) קבועים יכולים להיות לעזר רב, אולם אין בהם די.
אשר מדובר על קבוע מתמטי, אין עם כך שום בעיה, אולם כיצד נהפוך שדה המייצג מספר זיהוי של אדם לקבוע? הרי בעת הקומפילציה אין אנו יודעים כמה אובייקטים נייצר, ובטח שאין אנו יודעים, במעמד הקומפילציה, את מספרי הזיהוי של כל האנשים שיירשמו במערכת המידע שלנו וכמובן שמספר זהות הוא אישי ולכן הוא לא יכול להיות static (ו- const הוא תמיד static) ולכן שדות כגון אלו נגדיר כ- readonly. Readonly Data member ניתנים לאתחול פעם אחת בלבד, ב-Ctor של המחלקה, ומאותה נקודה והילך הם אינם ניתנים עוד לשינוי. Readonly Data Members מגדירים באמצעות במילה השמורה readonly :
תכונות אלו ניתנות לאתחול פעם אחת בלבד בבנאי של המחלקה, מאותה נקודה והילך ערכיה אינם ניתנים עוד לשינוי. תחביר:
class Sample { . . . private readonly int id; . . . }