2010-02-15 46 views

risposta

40

dichiarare una classe documenti statici il vostro intento per quella classe di essere un insieme di funzionalità statica, e chiunque l'aggiunta di membri di istanza otterrà un errore di compilazione.

Una classe non statica con membri statici indica in genere che la classe è progettata per essere istanziata in un determinato momento. I metodi statici di queste classi di solito fanno una delle due cose:

  1. Fornire un metodo factory per creare un'istanza di quel tipo;
  2. Fornire funzionalità di supporto che non richiede un'istanza del tipo;

Inoltre, come già detto, i metodi di estensione possono essere dichiarati solo su una classe statica.

18

presumo è stato chiesto per le differenze?

Un metodo statico su una classe statica può essere utilizzato per definire un metodo di estensione. Un metodo statico su una classe non statica non può.

+0

Questo tipo di risposta generica è rilevante solo per C#. –

+7

@Nathan la domanda menziona espressamente C# così si – JaredPar

15

In termini di prestazioni e utilizzo della memoria; proprio nulla. Avere una classe statica significa che sa non ci sono istanze, ma di nuovo in 1.1 con un costruttore privato sufficiente. Usa una classe statica se semplicemente non ha senso avere un'istanza! (classi di utilità, ecc.)

5

Quando si forniscono funzioni di utilità e tutti i metodi sono statici, si consiglia di utilizzare metodi statici in una classe statica.

Quando si desidera fornire metodi di utilità che si occupano solo dell'istanza, si consiglia di utilizzare metodi statici in una classe non statica. Per esempio:

var myClass = MyClass.Create(); 
var myClass = MyClass.Parse("serialized.MyClass"); 
-1

Una delle principali differenze che ho dovuto affrontare nel decidere se andare con la classe normale con tutti i metodi statici o, utilizzare una classe statica, è che una classe normale supporta l'implementazione dell'interfaccia, laddove la classe statica no. Uso la classe statica solo quando sono sicuro che sarà una raccolta di funzioni statiche (in genere funzioni di supporto) e non sarà mai nel flusso principale del programma. Promuovo la programmazione di interfacce, per iniezioni di dipendenze, test di unità ecc. Quindi, per il flusso principale del programma, utilizzo la classe normale con metodi statici.

Problemi correlati