Un campo di sola lettura deve essere utilizzato quando si dispone di una variabile che sarà nota all'oggetto-instatiation che non dovrebbe essere modificata in seguito.readonly-fields come target dai costruttori di sottoclasse
Tuttavia non è consentito assegnare campi di sola lettura da costruttori di sottoclassi. Questo non funziona nemmeno se la superclasse è astratta.
Qualcuno ha una buona spiegazione del perché questa non è una buona idea, o manca nella C# languange?
abstract class Super
{
protected readonly int Field;
}
class Sub : Super
{
public Sub()
{
this.Field = 5; //Not compileable
}
}
PS: Ovviamente si può raggiungere lo stesso risultato con l'assegnazione dei campi di sola lettura in un costruttore protetto nella superclasse.
Anche l'errore del compilatore non è accurato: 'Errore 68 Non è possibile assegnare un campo di sola lettura (tranne in un costruttore o un inizializzatore di variabile)' – nicodemus13