There is a small gotcha with readonly. A readonly field can be set multiple times within the constructor(s). Even if the value is set in two different chained constructors it is still allowed.
public class Sample {
private readonly string ro;
public Sample() {
ro = "set";"set";
}
public Sample(string value) : this() {
ro = value; // this works even though it was set in the no-arg ctor
}
}