Vi sieti mai chiesti se i programmi vuoti (cioè da 0 bytes) compilano? Queste due righe nel VS .NET Command Prompt:
type foo.cs > foo.cs
csc /t:library foo.cs
producono un DLL da 3072 bytes.
Forse per qualcuno sapere questo potrebbe sembrare una cosa di poco peso. Voglio però farvi notare che, se al posto del file vuoto compilate uno snippet che contiene un namespace vuoto:
namespace empty{}
risulterà un DLL della stessa dimensione di 3072 bytes. Se provate con ildasm a vedere il codice IL nei due casi, vedrete che sono identici.
Cosa vuol dire questo? Ci dobbiamo semplicemente ricordare che il concetto di namespace è al livello del linguaggio e non scende al livello IL (vedi le specifiche CLI Partition II "While some programming languages introduce the concept of a namespace, there is no support in the CLI for this concept." capitolo 6). Quindi, un namespace vuoto è uguale a un codice vuoto.
La canzone del giorno: Franco Battiato - "Conforto alla vita" con versi come questi:
"Ah, quante volte un malefico vento ti colse
ma il soave profumo risaturò subito l'aria"