C#是個直譯式語言。
直譯語言(英語:Interpreted language),又稱直譯式語言,是一種程式語言。這種類型的程式語言,會將程式碼一句一句直接執行,不需要像編譯語言(Compiled language)一樣,經過編譯器先行編譯為機器碼,之後再執行。這種程式語言需要利用直譯器,在執行期,動態將程式碼逐句直譯(interpret)為機器碼,或是已經預先編譯為機器碼的的子程式,之後再執行。
理論上,任何程式語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程式的應用有關。許多程式語言同時採用編譯器與直譯器來實作,其中包括Lisp,Pascal,C,BASIC與Python。JAVA及C#採用混合方式,先將程式碼編譯為bytecode,在執行時再進行直譯。
編譯語言(英語:Compiled language)是一種以編譯器來實作的程式語言。它不像直譯語言一樣,由直譯器將程式碼一句一句執行,而是以編譯器,先將程式碼編譯為機器碼,再加以執行。理論上,任何程式語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程式的應用有關。
兩者差距
一般而言,用編譯語言寫成的程式,在執行期的執行速度,通常比用直譯語言寫的程式快。因為程式在編譯期,已經被預先編譯成機器碼,可以直接執行,不用像直譯語言一樣,還要多一道直譯程式。
但是要先進行編譯,之後才能執行程式,這也造成了編譯語言的缺點。一般而言,編譯語言的程式開發速度,以及除錯時間,都是比較長的。因為它不像直譯語言可以寫完一行,或一小段程式之後,馬上執行,馬上除錯。直譯語言通常讓程式開發的整體時間變少,在開發過程中,程式師也可以更彈性、快速的測試自己的想法。
為了改善直譯語言的效率而發展出的即時編譯技術,已經縮小了這兩種語言間的差距。這種技術混合了編譯語言與直譯語言的優點,它像編譯語言一樣,先把程式原始碼編譯成字節碼。到執行期時,再將字節碼直譯,之後執行。Java與LLVM是這種技術的代表產物。