Quando si tratta di metodi di estensione, i nomi di classe sembrano non fare nulla, ma fornire un raggruppamento che è ciò che gli spazi dei nomi fanno. Non appena includo lo spazio dei nomi ottengo tutti i metodi di estensione nello spazio dei nomi. Quindi la mia domanda si riduce a questo: c'è qualche valore che posso ottenere dai metodi di estensione che si trovano nella classe statica?I metodi di estensione traggono vantaggio in modo pratico dall'essere parte di una classe statica rispetto a [teoricamente] una parte di uno spazio dei nomi?
Mi rendo conto che è necessario un compilatore per inserirli in una classe statica, ma sembra che dal punto di vista organizzativo sia ragionevole che sia legale consentire i metodi di estensione da definire negli spazi dei nomi senza classi che li circondano. Riformulare la domanda di cui sopra in un altro modo: C'è qualche vantaggio pratico o aiuto in qualche scenario che ottengo come sviluppatore dal fatto che i metodi di estensione sono collegati alla classe e collegati allo spazio dei nomi?
Fondamentalmente sto solo cercando di ottenere intuizioni, conferme o intuizioni - sospetto che potrebbe essere che sia stato più semplice implementare i metodi di estensione in quel modo e non valeva il tempo di consentire l'esistenza di metodi di estensione sul loro proprio in spazi nome.
Essi * potrebbero * condividere variabili di istanza statiche della classe, ovviamente ... Inoltre, tenere presente che è ancora possibile chiamare i metodi di estensione attraverso la sintassi della classe regolare. –
C# è _all_ sulle classi. Lo sviluppo del linguaggio e dell'intero sistema CLR/.NET deriva dalla scuola di programmazione "avremmo preferito non avere le cose non nelle classi" ereditata da java e JVM. – Will
Giriamo la domanda: come definirebbe un metodo al di fuori di un tipo? –