Perché utilizzare sigillato anziché statico in una classe?

4

Il nostro sistema ha diverse classi di utilità.

Alcune persone del nostro team usano (A) una classe con metodi completamente statici e un costruttore privato.

Altri usano (B) una classe con metodi all-static (questi i junior).

Sull'analisi del codice, (A) e (B) sollevare l'avviso CA1052 , che consiglia contrassegnando la classe come sigillata.

Incluso nella documentazione MSDN c'è il seguente consiglio:

If you are targeting .NET Framework 2.0 or earlier, a better approach is to mark the type as static.

Perché ha senso? Avrei pensato il contrario; AFAIK, precedente alla 2.0, non c'era modo di contrassegnare una classe come statica.

    
posta sq33G 11.11.2011 - 10:19
fonte

3 risposte

7

La pagina MSDN è sbagliata; dovrebbe dire "dopo" non "prima". Le classi static sono state introdotte in .NET 2.0.

    
risposta data 11.11.2011 - 10:28
fonte
2

Ho visto un buon numero di classi di utilità nell'era pre-2.0 che hanno tutti i metodi static e un costruttore predefinito private per renderlo non-instantiable. Anche allora, però, quella classe avrebbe dovuto essere sealed .

2.0 e versioni successive, contrassegna semplicemente la classe come static e fallo con essa.

    
risposta data 11.11.2011 - 17:14
fonte
1

L'avviso CA1052 è un po 'fuori bersaglio. È necessario dichiarare le classi che contengono solo membri statici come statici anziché sealed. Le classi dichiarate statiche sono implicitamente sigillate.

    
risposta data 11.11.2011 - 17:05
fonte

Leggi altre domande sui tag