2011-12-14 12 views
7

In questo sito, di solito, le persone rispondono a domande con risposte come "funziona così perché il compilatore sostituisce [cosa] con [altra cosa]", quindi la mia domanda è: come fanno le persone a sapere/imparare questo? Dove posso imparare queste cose?Dove posso leggere cosa fa il compilatore C#?

+11

È necessario conoscere l'handshake segreta. – ChaosPandion

+0

http://www.dotnetperls.com/compiler –

+3

[C# Language Specification] (http://msdn.microsoft.com/en-us/library/ms228593.aspx) e [Reflectors] (http: // stackoverflow. it/questions/2425973/open-source-alternatives-to-reflector) –

risposta

13

La fonte più definitiva di come il compilatore C# interpreta il codice è la specifica del linguaggio C#.

anche i seguenti blog offrono un sacco di un quadro più chiaro il linguaggio C#. lettura obbligatoria per chiunque voglia diventare un esperto nel linguaggio

+6

Vorrei aggiungere [il blog di Eric Lippert] (http: // blog. msdn.com/b/ericlippert/) a quello. – GSerg

+3

@GSerg Spesso penso alle specifiche C# lang come "cosa sta facendo il compilatore" e al blog di Eric come "perché il compilatore sta facendo quello che sta facendo" – JaredPar

2

Una tecnica è quella di compilare il codice, e poi decompilare utilizzando strumenti come ILSpy. Usando un tale strumento, puoi visualizzare l'IL grezzo e vedere di persona ciò che il compilatore produce.

0

Oltre a verificare la lingua intermedia e la lettura delle specifiche della lingua, consentimi di aggiungere "CLR tramite C#" di Jeffrey Richter. Numero di controllo della Library of Congress di Microsoft Press: 2009943026. Questo riferimento è sorprendente e va nel dettaglio completo su ciò che sta accadendo sotto le copertine.

0

Il libro di Niklaus Wirth Compiler Construction (PDF) è un'introduzione alla teoria e alle tecniche di costruzione del compilatore. Ti dà un'idea generale di cosa sia un compilatore e cosa fa.

1

In aggiunta alle altre risposte, vorrei menzionare che lo LINQPad è il mio strumento preferito per ispezionare IL per i frammenti rapidi.

È possibile digitare uno snippet di codice e visualizzare immediatamente l'IL.
È lo strumento di gran lunga più semplice da utilizzare e puoi apportare modifiche e visualizzare immediatamente i risultati.