2009-08-24 18 views
37

La domanda che ho sempre voluto porre e ho avuto paura, in realtà - in che lingua è scritto .NET Framework? Intendo la biblioteca stessa.
Mi sembra che sia principalmente C e C++. (Spero che Jon Skeet stia leggendo questo, sarà molto interessante sentire cosa ne pensa)In quale lingua è scritto .NET Framework?

+1

Scarica la fonte e scoprire: http://referencesource.microsoft.com/netframework.aspx –

+0

@michielvoo il tuo link è morto, aggiornato sarebbe apprezzato. – Aelphaeis

+4

@Aelphaeis Ora è solo http://referencesource.microsoft.com –

risposta

50

CLI/CLR è scritto in C/C++ e assemblato. Quasi tutte le classi del framework .NET sono scritte in C#> compilate in IL, che viene eseguito nel CLR. Se apri una libreria framework in Reflector, classe, potresti vedere un attributo come [MethodImpl (MethodImplOptions.InternalCall)] che delega la chiamata alla CLI.

+9

Si noti che questo si applica solo a Microsoft .NET. Altre implementazioni della CLI possono essere progettate in modo diverso. Ad esempio, in Mono molte delle cose scritte in C/C++ in Microsoft.NET sono in realtà scritte in C# in Mono. Inoltre, esistono implementazioni metacircolari, sia di Microsoft Research che di altre organizzazioni, che sono scritte * interamente * in C#. –

+0

Jörg W Mittag - Grazie, non lo sapevo. Dovrà dare un'occhiata alle implementazioni C#. –

+0

Questo è fondamentalmente affermato in [Storia di StyleCop] (https://stylecop.codeplex.com/wikipage?title = A% 20Brief% 20History% 20of% 20CSharp% 20Style), se qualcuno vuole un riferimento citato. –

3

Ci sono parti di .NET Framework che sono open-source, come ASP.NET MVC, ed è scritto in C#.

Poiché .NET Framework rappresenta molti assiemi, presumo che diverse librerie siano scritte in lingue diverse. Finché la lingua è compatibile con CLR, può essere utilizzata per creare parti del framework.

Tutto detto, però; Immagino che la parte del leone di .NET Framework sia scritta in C++ e C#.

5

.NET era completamente scritto in C e C++ perché la base era in linguaggio assembly. L'integrazione dell'assemblaggio con C è molto più semplice rispetto alle lingue più recenti.

3

Microsoft .NET Framework è diviso in molti segmenti.

CLR: C++

IO/Signal Processing: Assemblea

BaseClass Biblioteca: C#

System.Threading: C#

complessa struttura dati: C++

Esempio: GetHashCode

Problemi correlati