Se debe usar un campo de solo lectura cuando se tiene una variable que se conocerá en la instauración del objeto que no se debe modificar posteriormente.readonly-fields como destinos de los constructores de las subclases
Sin embargo, no se permite asignar campos de solo lectura desde constructores de subclases. Esto ni siquiera funciona si la superclase es abstracta.
¿Alguien tiene una buena explicación de por qué esto no es una buena idea, o carece de C# languange?
abstract class Super
{
protected readonly int Field;
}
class Sub : Super
{
public Sub()
{
this.Field = 5; //Not compileable
}
}
PS: Por supuesto, puede alcanzar el mismo resultado haciendo que la asignación de los campos de sólo lectura en un constructor protegida en la superclase.
Además, el error del compilador no es exacto: 'Error 68 No se puede asignar un campo de solo lectura (excepto en un constructor o inicializador de variable)' – nicodemus13