Another useful article can be found here:
Constant vs Readonly vs Static Keywords in C#[
^]
and here:
Practical Difference between Const & ReadOnly[
^]
For further details, please see:
Properties Tutorial (C#)[
^]
Using Properties (C# Programming Guide)[
^]
As to the readonly properties of class...
Use it when you want to prevent user to change value returned by this property. Example:
void Main()
{
Person p = new Person("Maciej", "Los", new DateTime(1968,1,1));
Console.WriteLine("Person details: {0} {1}, age: {2}", p.FirstName, p.LastName, p.Age);
p.DateOfBirth = new DateTime(1970,2,12);
Console.WriteLine("Person details: {0} {1}, age: {2}", p.FirstName, p.LastName, p.Age);
}
public class Person
{
private string sFName = string.Empty;
private string sLName = string.Empty;
private DateTime dDob = new DateTime(1900,1,1);
public Person(string _FName, string _LName, DateTime _DateOfBirth)
{
sFName = _FName;
sLName = _LName;
dDob = _DateOfBirth;
}
public string FirstName
{
get { return sFName; }
set { sFName = value; }
}
public string LastName
{
get { return sLName; }
set { sLName = value; }
}
public DateTime DateOfBirth
{
get { return dDob; }
set { dDob = value; }
}
public int Age
{
get{ return DateTime.Today.Year - dDob.Year; }
}
}
Above code returns:
Person details: Maciej Los, age: 49
Person details: Maciej Los, age: 47