2009-08-24 34 views
37

Câu hỏi tôi luôn muốn hỏi và thực sự sợ - NET Framework được viết bằng ngôn ngữ nào? Tôi có nghĩa là chính thư viện.
Dường như với tôi rằng đó là C và C++ chủ yếu. (Tôi hy vọng Jon Skeet đang đọc cuốn sách này, nó sẽ rất thú vị khi nghe những gì anh ấy nghĩ về nó)NET Framework được viết bằng ngôn ngữ nào?

+1

Tải nguồn và tìm hiểu: http://referencesource.microsoft.com/netframework.aspx –

+0

@michielvoo liên kết của bạn đã chết, cập nhật sẽ được đánh giá cao. – Aelphaeis

+4

@Aelphaeis Bây giờ chỉ http://referencesource.microsoft.com –

Trả lời

50

CLI/CLR được viết bằng C/C++ và assembly. Hầu hết tất cả các lớp .NET framework được viết bằng C#> được biên dịch thành IL, chạy trong CLR. Nếu bạn crack mở một thư viện khung trong Reflector, lớp, bạn có thể thấy một thuộc tính như [MethodImpl (MethodImplOptions.InternalCall)] mà đại biểu các cuộc gọi đến CLI.

+9

Xin lưu ý rằng điều này chỉ áp dụng cho Microsoft .NET. Các triển khai khác của CLI có thể được kiến ​​trúc khác nhau. Ví dụ: trong Mono, rất nhiều nội dung được viết bằng C/C++ trong Microsoft.NET thực ra được viết bằng C# trong Mono. Ngoài ra, có những triển khai metacircular, cả bởi Microsoft Research và các tổ chức khác, được viết * hoàn toàn * trong C#. –

+0

Jörg W Mittag - Cảm ơn, không biết điều đó. Sẽ phải xem xét triển khai C#. –

+0

Điều này về cơ bản được nêu trong [Lược sử của StyleCop] (https://stylecop.codeplex.com/wikipage?title = A% 20Brief% 20History% 20of% 20CSharp% 20Style), nếu có ai muốn tham chiếu được trích dẫn. –

3

Có một số phần của Khuôn khổ .NET là mã nguồn mở, như ASP.NET MVC, và đó là được viết bằng C#.

Vì Khuôn khổ .NET đại diện cho nhiều hội đồng, tôi cho rằng các thư viện khác nhau được viết bằng các ngôn ngữ khác nhau. Miễn là ngôn ngữ tuân thủ CLR, nó có thể được sử dụng để xây dựng các phần của khung công tác.

Tất cả đã nói; Tôi muốn giả định chia sẻ của con sư tử của .NET Framework được viết bằng C++ và C#.

5

.NET được viết hoàn toàn bằng C và C++ vì cơ sở ở ngôn ngữ assembly. Việc tích hợp assembly với C dễ dàng hơn nhiều so với các ngôn ngữ mới hơn.

3

Microsoft .NET Framework được chia thành nhiều phân đoạn.

CLR: C++

IO/Xử lý tín hiệu: hội

BaseClass Thư viện: C#

System.Threading: C#

Complex Cấu trúc dữ liệu: C++

Ví dụ: GetHashCode

Các vấn đề liên quan