2012-09-25 61 views
7

Tôi biết rằng mã Java được biên dịch thành mã byte, được thực thi bởi JVM.Mã C# có được biên dịch thành các tệp nhị phân gốc không?

Trường hợp với C# là gì? Tôi đã nhận thấy rằng các ứng dụng được viết bằng C# có phần mở rộng là .exe, những gì sẽ gợi ý chúng là các chỉ dẫn máy gốc. Nhưng nó thực sự như vậy ?

+0

này nên giải thích. http://en.wikipedia.org/wiki/List_of_CLI_languages ​​ – km1

+0

Với ngen (giống Java với jit) – Cynede

Trả lời

14

số

Giống như Java, C# được biên dịch sang ngôn ngữ trung gian (gọi là MSIL hoặc CIL).

Không giống như Java, IL được lưu trữ trong các tệp EXE có đủ mã EXE để hiển thị một hộp thoại yêu cầu người dùng cài đặt .Net.

+1

Mm. Bit khó hiểu chỉ cần nói "Không" với "Mã C# đã được biên dịch chưa". Rõ ràng, nó được biên dịch. Hướng dẫn CLI. Chỉ cần không (trực tiếp) vào mã gốc. Rõ ràng, cuối cùng họ _are_ (just-in-time) được biên dịch thành mã gốc, anyways. – sehe

+0

@sehe: Tôi đang nói "không" với dòng cuối cùng trong câu hỏi. – SLaks

+0

Tôi đã chỉnh sửa tiêu đề câu hỏi để tránh sự không phù hợp ở đó :) – sehe

2

mã C# được biên dịch thành MSIL. nó thích bytecode java. msil sẽ được chuyển thành isntrctions của máy khi chạy.

1

mã C# được biên dịch để MSIL, MSIL được đưa về chăm sóc bởi .NET CLR

2

C# biên soạn được thực hiện theo hai bước sau:

1. Conversion from C# to CIL by the C# compiler 

2. Conversion from CIL to instructions that the processor can execute. 

Một thành phần (chỉ trong thời gian) thực hiện quá trình biên dịch tại thời gian chạy từ CIL đến mã máy

3

Điều mà exe được cho là cho bạn biết rằng tệp có thể thực thi được. C# được biên dịch thành bytecode, giống như java, nhưng .NET bao bọc nó trong một tệp thực thi CLR.

Look đây để nhìn sâu hơn trong lúc CLR thực thi http://etutorials.org/Programming/.NET+Framework+Essentials/Chapter+2.+The+Common+Language+Runtime/2.2+CLR+Executables/

+0

Thuật ngữ Portable Executable không chỉ dành riêng cho .NET. – Matthew

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