Contrassegnare una classe come Sealedimpedisce la manomissione di classi importanti che possono compromettere la sicurezza o influire sulle prestazioni.
Molte volte, sigillare una classe ha senso anche quando si progetta una classe di utilità con un comportamento fisso, che non vogliamo cambiare.
Ad esempio, lo Systemspazio dei nomi in C#fornisce molte classi che sono sigillate, come String. Se non sigillato, sarebbe possibile estenderne le funzionalità, il che potrebbe essere indesiderabile, in quanto è un tipo fondamentale con una determinata funzionalità.
Allo stesso modo, structuresin C#sono sempre implicitamente sigillati. Quindi non si può derivare una struttura / classe da un'altra struttura. Il motivo è che structuresvengono utilizzati per modellare solo tipi di dati autonomi, atomici e definiti dall'utente , che non si desidera modificare.
A volte, quando crei gerarchie di classi, potresti voler limitare un determinato ramo nella catena di ereditarietà, in base al tuo modello di dominio o alle regole aziendali.
Ad esempio, un Managere PartTimeEmployeesono entrambi Employee, ma non hai alcun ruolo dopo i dipendenti part-time nella tua organizzazione. In questo caso, potresti voler sigillare PartTimeEmployeeper evitare ulteriori ramificazioni. D'altra parte, se hai dipendenti part-time orari o settimanali, potrebbe avere senso ereditarli da PartTimeEmployee.