#339 – Readonly Fields vs. Read-Only Properties

A read-only property in a class is similar to a readonly field.  Both expose a value that users of the class can read, but not write.

A readonly field is defined using the readonly modifier.  A read-only property is defined by including a get accessor for the property, but not a set accessor.

A readonly field can have only a single value, set either at the time that the field is declared, or in a constructor.  A read-only property returns a value that may be different each time the property is read.

Example of a readonly field:

        // Readonly field, initialized in constructor
        public readonly string OriginalName;

        public Dog(string name)
        {
            Name = name;

            // Set readonly field once, in the constructor
            OriginalName = name;
        }

Example of a read-only property:

        public string FormalName
        {
            get
            {
                return string.Format("Sir {0}", Name);
            }
        }
Advertisement