2009-08-24 16 views
37

Pytanie, które zawsze chciałem zapytać i czego się obawiałem, w rzeczywistości - w jakim języku napisano .NET Framework? Mam na myśli samą bibliotekę.
Wydaje mi się, że było to głównie C i C++. (Mam nadzieję, że Jon Skeet czyta ten, będzie bardzo interesująco usłyszeć, co o nim myśli).W jakim języku napisano .NET Framework?

+1

Pobierz źródła i dowiedzieć się: http://referencesource.microsoft.com/netframework.aspx –

+0

@michielvoo twój link zmarł, aktualizacja byłaby doceniona. – Aelphaeis

+4

@Aelphaeis To teraz tylko http://referencesource.microsoft.com –

Odpowiedz

50

CLI/CLR jest napisane w C/C++ i montażu. Prawie wszystkie klasy architektury .NET są napisane w C#> skompilowanym do IL, który działa w CLR. Jeśli otworzysz bibliotekę szkieletową w klasie Reflector, możesz zobaczyć atrybut, taki jak [MethodImpl (MethodImplOptions.InternalCall)], który deleguje wywołanie do interfejsu CLI.

+9

Należy pamiętać, że dotyczy to tylko Microsoft .NET. Inne implementacje CLI mogą być różnie zaprojektowane. Np. W Mono wiele rzeczy napisanych w C/C++ w Microsoft.NET jest napisanych w języku C# w Mono. Istnieją także metakorporacyjne implementacje, zarówno przez Microsoft Research, jak i inne organizacje, które są napisane * całkowicie * w języku C#. –

+0

Jörg W Mittag - Dzięki, nie wiedziałem tego. Będzie musiał przyjrzeć się implementacjom języka C#. –

+0

Jest to zasadniczo określone w [Historia StyleCop] (https://stylecop.codeplex.com/wikipage?title = A% 20Brief% 20History% 20of% 20CSharp% 20Style), jeśli ktoś chce cytowanego odnośnika. –

3

Istnieją części .NET Framework, które są open source, takie jak ASP.NET MVC, i to jest napisane w C#.

Ponieważ. NET Framework reprezentuje wiele zespołów, zakładam, że różne biblioteki są napisane w różnych językach. Dopóki język jest zgodny z CLR, może być używany do budowania części architektury.

Wszystko jednak powiedziane; Zakładam, że lwią część platformy .NET Framework napisano w C++ i C#.

5

.NET został napisany w języku C i C++, ponieważ baza była w języku asemblerowym. Integracja zestawu z C jest znacznie łatwiejsza w porównaniu z nowszymi językami.

3

Microsoft .NET Framework jest podzielony na wiele segmentów.

CLR: C++

IO/Signal Processing: Montaż

klasy bazowej Biblioteka: C#

System.Threading: C#

Złożona struktura danych: C++

Przykład: GetHashCode