當前位置:首頁 » 編程軟體 » csharp編譯器

csharp編譯器

發布時間: 2023-07-09 08:30:48

❶ 如何在Visual Studio中選擇C++和C#的編譯器版本

Visu後來進行C++、C#、web開發,改為開發環境。

❷ 請推薦一款虛擬機軟體

推薦給這位朋友CSM腳本語言編譯器和虛擬機執行器
CSM腳本語言是國人自主研發的,擁有自主知識產權(軟體著作權證書號為2006SR16059)的,是世界上第一款也是迄今為止(2006年10月)唯一的一款嵌入型的,高性能的,工業強度級的,基於對象的,完全強類型的,基於寄存器虛擬機實現的靜態編譯型腳本語言.它是主流編譯型宿主語言(C/C++/ C#/Java)在腳本領域的自然延伸.也代表著這一領域的頂尖設計水平.CSM是C Sharp Minus的簡稱,其語法形式大部分取自於微軟的c#語言,但也有許多不同.而語義上基本與C/C++相同.CSM腳本語言有許多獨特的特性使其成為最優秀的靜態腳本語言之一.具體的介紹如下:
CSM 腳本語言提供與主流編譯型宿主語言(C/C++/C#/Java)相同或相似的語法形式和思維習慣.
CSM 腳本最終生成位元組碼,以二進制的方式嵌入到宿主環境中,這防止了腳本文本本身的直接暴露,保護了編寫者的利益.而且編譯器和腳本源程序無須隨應用宿主程序一同分發.
CSM 編譯器提供精確到某行某列的,詳盡的,完全中文化的編譯出錯信息顯示.
CSM 編譯器內部大量使用了虛擬內存,內存映射文件和嵌入式匯編技術,使編譯速度更加快速.
支持預編譯處理中的條件編譯功能.(由#def / #undef / #if / #ifdef /#endif等預處理指令提供的一組預處理功能).這使腳本程序像VC++那樣可以提供debug和release版本.
天生就是Unicode,所以支持中文的類名,變數名,常量名,函數名,屬性(property)名.
支持sbyte,byte,short,ushort,int,uint,long,ulong整型類型,以及float,double浮點類型,和bool,char等強類型數據.
從形式語法上徹底取消了指針的使用(但是語義上還是保留的),但又不失指針操作的靈活性,CSM腳本語言在這方面作出了不小的努力.
支持類和對象的概念,並同時支持全局常量,枚舉成員,常量成員,靜態成員,實例成員。以及靜態構造方法,靜態析構方法,實例構造方法,實例析構方法,普通靜態成員方法,普通實例成員方法,靜態和實例屬性,以及==和!=操作符重載方法. 可在方法中定義out類型的參數.並支持方法重載(method overload)功能.
支持類中成員的1,2,4,8,16位元組對齊屬性,這為與C/C++宿主語言進行通訊,提供了相同的內存布局結構,能夠以更加直接而快速的方式操控數據.
像Java或C#那樣,支持靜態和實例成員的初始化表達式.
支持各種算術,邏輯,布爾運算,復合運算及強制類型轉換功能.
支持各種語句,包括聲明語句,表達式語句,循環語句,跳轉(goto)語句,以及switch語句,特別是switch語句,採用了和編譯型宿主語言一樣的技術.內部實現通過使用平衡樹建立跳轉表的方式,大大提高比較速度,使得在1000個分支的最壞情況下比較十次,加快了運行速度.
支持靜態和實例方法的回調機制(這在c/c++中被稱為函數指針,而C#中被稱作代理delegate),能提供一定程度上的多態特性,並且通過這種方式可實現Event機制.
支持作用域和局部對象(或稱棧對象)的概念,當局部對象退出其所在的作用域時,將自動調用其析構方法,且調用的次序正好與構造的次序相反,這是最典型的C++特徵.
提供快速高效的運算元功能.
提供局部堆和全局堆對象的分配功能.
對堆對象實行手工的new/delete分配和釋放功能,做到與宿主語言C/C++一致.
有對系統調用的跟蹤功能,一旦程序發生崩潰,能自動給出崩潰的語句點,以及此時的方法調用堆棧.這有點像我們在Windows系統中常見的崩潰對話框.
CSM腳本語言編譯成位元組碼後由CSMachine虛擬機執行,CSMachine虛擬機上執行的匯編語言被稱作是CSMasm匯編語言.而CSMachine虛擬機也是當今獨一無二的強大的虛擬機實現之一:
CSMachine虛擬機是一種完全強類型的32位虛擬機,它支持約2500條虛擬機指令,每條虛擬機指令均以嵌入式匯編語言實現,以求達到最高的運行效率.
由於CSMasm具有龐大的指令集,所以對腳本的逆向工程能起到很強的遏製作用.使得反編譯CSM位元組碼的工作很困難,這在很大程度上保護了腳本編寫者的經濟利益.
利用虛擬內存和內存映射技術對CSM執行映像進行分段,如數據段,代碼段,堆棧段,局部堆,全局堆,對代碼段實施只讀保護,這起到了沙箱保護的功能.
CSMachine的堆棧尺寸可根據實際情況自動而靈活地擴大和收縮,無須象其它的腳本語言那樣時刻去留意是否引發堆棧溢出.
是基於寄存器的實現方式,這種方式比嵌入型棧式虛擬機速度稍快.
是開放式虛擬機設計,只須通過Wrap/Unwrap操作對指針進行坐標系調整,不像封閉式虛擬機那樣必須使用Marshal/Unmarshal進行數據塊復制.
提供載入多個腳本以及一個腳本的多個副本的功能,為腳本程序的團隊化開發和多線程應用提供了強而有力的技術保障.

希望這位朋友能喜歡
參考資料:http://www.27down.com/soft/10/169/2007/2007129961419.html

❸ 誰給簡單介紹一下C#

特點有很多,簡單易上手是比較明顯的
編程方式。。。你指什麼?
主要應用:網路,WEB開發
簡單,但是依然有它需要長時間研究的地方
IDE:VS系列,2003,2005,2008等
可以游戲開發,理論上是都能做的

❹ C#屬於什麼語言

個人答案:面向對象語言x0dx0ax0dx0a官方文獻:x0dx0aC#(C Sharp)是微軟(Microsoft)為.NET Framework量身訂做的程序語言,C#擁有C/C++的強大功能以及Visual Basic簡易使用的特性,是第一個組件導向(Component-oriented)的程序語言,和C++與Java一樣亦為對象導向(object-oriented)程序語言。x0dx0ax0dx0a簡介x0dx0ax0dx0a C sharp(又被簡稱為「C#」)是微軟公司在二零零年六月發布的一種新的編程語言,並定於在微軟職業開發者論壇(PDC)上登台亮相.C#是微軟公司研究員Anders Hejlsberg的最新成果.C#看起來與Java有著驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程.但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網路框架的主角.x0dx0a 在本文中,我將考察創建一種新計算機語言的一般動機,並將特別指明是什麼原因導致了C#的出現.然後我將介紹C#和它與Java,c,c++的相似之處.其次我將討論一些存在於Java和C#之間的高層次的,和基礎的差別.我將以衡量在用多種語言開發大型應用程序的時候所需的知識(或者對這種知識的缺乏程度)來結束本文,而這正是.NET和C#的一個主要戰略.目前,C#和.NET還只能以C#語言規則,以及Windows 2000的一個"d預覽版本",還有MSDN上迅速增多的文檔集子的形式獲得(還沒有最終定型).x0dx0a編輯本段x0dx0a定義x0dx0ax0dx0a 微軟c#語言定義主要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點.C#在設計者從C++繼承的可選選項方面比Java要廣泛一些(比如說structs),它還增加了自己新的特點(比方說源代碼版本定義).但它還太不成熟,不可能擠垮Java.C#還需要進化成一種開發者能夠接受和採用的語言.而微軟當前為它的這種新語言大造聲勢也是值得注意的.目前大家的反應是:"這是對Java的反擊."x0dx0a C#更象Java一些,雖然微軟在這個問題上保持沉默.這也是意料中的事數配情,我覺得,因為Java近來很成功而使用Java的公司都報告說它們在生產效率上比C++獲得了提高.x0dx0a Java所帶來的巨大影響和大家對它的廣泛接受已經由工作於這種語言和平台之上的程序員數量明顯的說明了(估計世界范圍內共有兩百五十萬程序員使用Java).由這種語言寫成的應用程序的數量是令人驚訝的並已經滲透了每一個級別的計算,包括無線計算和行動電話(比如日本發明的Java電話).C#能夠在用戶領域獲得這樣的禮遇嗎?我們必須等待並觀望,就象已經由SSI公司的CEO和主席Kalpathi S. Suresh指出來的那樣,"我發現所有這些都是漸進的.如果C#不型亮存在,我們總能回到Java或C和C++.這些都不完全是新技術;它們在更大的意義上來說只是大公司製造的市場噱頭.我們必須給他們時間安頓下來看看這些是不是卜畢寬真的對IT工業有什麼影響."x0dx0a編輯本段x0dx0aC#從Java繼承而來的特點x0dx0ax0dx0a 類:在C#中類的申明與Java很相似.這是合理的因為經驗告訴我們Java模型工作得很好.Java的關鍵字import已經被替換成using,它起到了同樣的作用.一個類開始執行的起點是靜態方法Main().下面的Hello World程序展示了基本的形式:x0dx0a using System;x0dx0a class Hello {x0dx0a static void Main() {x0dx0a Console.WriteLine("Hello, world");x0dx0a }x0dx0a }x0dx0a 在這個例子中,System這個名字指向一個包括了基本C#實用類集合的命名空間(namespace).這個命名空間包括了Console類,它在這個例子中被用來輸出一個字元串.類可以是抽象的和不可繼承的:一個被申明成abstract的類不能被實例化;它只能被用做一個基類.C#關鍵字lock就象Java關鍵字final,它申明一個類不是抽象的,但是它也不能被用做另一個類的基類.界面:就象在Java中一樣,一個界面是一組方法集合的抽象定義.當一個類或結構體實現一個界面的時候,它必須實現這個界面中定義的所有方法.一個單一的類可以實現幾個界面.也許以後會出現一些微妙的差別,但是這個特點看起來與Java相比沒有變化.布爾運算:條件表達式的結果是布爾數據類型,布爾數據類型是這種語言中獨立的一種數據類型.從布爾類型到其他類型沒有直接的轉換過程.布爾常量true和false是C#中的關鍵字.錯誤處理:如Java中那樣,通過拋出和捕捉異常對象來管理錯誤處理過程.內存管理:由底層.NET框架進行自動內存垃圾回收.x0dx0a編輯本段x0dx0aC#從C和C++繼承的特點x0dx0ax0dx0a 編譯:程序直接編譯成標準的二進制可執行形式.如果前面的Hello World程序被保存成一個文本文件並被命名為Hello.cs,它將被編譯成命名Hello.exe的可執行程序.x0dx0a 結構體:一個C#的結構體與C++的結構體是相似的,因為它能夠包含數據申明和方法.但是,不象C++,C#結構體與類是不同的而且不支持繼承.但是,與Java相同的是,一個結構體可以實現界面.x0dx0a 預編譯:C#中存在預編譯指令支持條件編譯,警告,錯誤報告和編譯行控制.可用的預編譯指令有:x0dx0a #definex0dx0a #undefx0dx0a #ifx0dx0a #elifx0dx0a #elsex0dx0a #endifx0dx0a #warningx0dx0a #errorx0dx0a #line []x0dx0a 沒有了#include 偽指令.你無法再用#define 語句對符號賦值,所以就不存在源代碼替換的概念--這些符號只能用在#if和#elif偽指令里.在#line偽指令里的數字(和可選的名字)能夠修改行號還有#warning和#error輸出結果的文件名.x0dx0a編輯本段x0dx0a操作符重載:x0dx0ax0dx0a 一些操作符能夠被重載,而另一些則不能.特別的是,沒有一個賦值運算符能夠被重載.能夠被被重載的單目操作符是:x0dx0a + - ! ~ ++ -- true falsex0dx0a 能夠被重載的二元運算符是:x0dx0a + - * / % & | ^ << >> == != > < >= <=x0dx0a編輯本段x0dx0aC#獨有的特點x0dx0ax0dx0a C#最引人入勝的地方是它和Java的不同,而不是相似的地方.這一節(和這個系列第二部分的大部分地方)講述了C#實現的和Java不同的地方或者Java根本沒有的特點.x0dx0a中間代碼:x0dx0a 微軟在用戶選擇何時MSIL應該編譯成機器碼的時候是留了很大的餘地.微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機器碼.它也明白許多--如果不是大多數的話--程序員認為Java程序要不可避免的比C編寫的任何東西都要慢.而這種實現方式決定了基於MSIL的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一個符合CLS的版本--等語言編寫的程序)將在性能上超過"解釋性的"Java代碼.當然,這一點還需要得到事實證明,因為C#和其他生成MSIL的編譯器還沒有發布.但是Java JIT編譯器的普遍存在使得Java和C#在性能上相對相同.象"C#是編譯語言而Java是解釋性的,"之類的聲明只是商業技巧.Java的中間代碼和MSIL都是中間的匯編形式的語言,它們在運行時或其它的時候被編譯成機器代碼.x0dx0a命名空間中的申明:x0dx0a 當你創建一個程序的時候,你在一個命名空間里創建了一個或多個類.同在這個命名空間里(在類的外面)你還有可能聲明界面,枚舉類型和結構體.必須使用using關鍵字來引用其他命名空間的內容.x0dx0a基本的數據類型x0dx0a :C#擁有比C,C++或者Java更廣泛的數據類型.這些類型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一樣,所有這些類型都有一個固定的大小.又象C和C++一樣,每個數據類型都有有符號和無符號兩種類型.與Java相同的是,一個字元變數包含的是一個16位的Unicode字元.C#新的數據類型是decimal數據類型,對於貨幣數據,它能存放28位10進制數字.x0dx0a兩個基本類:x0dx0a 一個名叫object的類是所有其他類的基類.而一個名叫string的類也象object一樣是這個語言的一部分.作為語言的一部分存在意味著編譯器有可能使用它--無論何時你在程序中寫入一句帶引號的字元串,編譯器會創建一個string對象來保存它.x0dx0a參數傳遞:x0dx0a 方法可以被聲明接受可變數目的參數.預設的參數傳遞方法是對基本數據類型進行值傳遞.ref關鍵字可以用來強迫一個變數通過引用傳遞,這使得一個變數可以接受一個返回值.out關鍵字也能聲明引用傳遞過程,與ref不同的地方是,它指明這個參數並不需要初始值.x0dx0a與COM的集成:x0dx0a C#對Windows程序最大的賣點可能就是它與COM的無縫集成了,COM就是微軟的Win32組件技術.實際上,最終有可能在任何.NET語言里編寫COM客戶和伺服器端.C#編寫的類可以子類化一個以存在的COM組件;生成的類也能被作為一個COM組件使用,然後又能使用,比方說,JScript語言子類化它從而得到第三個COM組件.這種現象的結果是導致了一個運行環境的產生,在這個環境里的組件是網路服務,可用用任何.NET語言子類化.x0dx0a索引下標:x0dx0a 一個索引與屬性除了不使用屬性名來引用類成員而是用一個方括弧中的數字來匿名引用(就象用數組下標一樣)以外是相似的.x0dx0a public class ListBox: Control {x0dx0a private string[] items;x0dx0a public string this[int index] {x0dx0a get {x0dx0a return items[index];x0dx0a }x0dx0a set {x0dx0a items[index] = value;x0dx0a Repaint();x0dx0a }x0dx0a }x0dx0a }x0dx0a 可以用一個循環器來匿名引用字元串內部數組成員,就象下面這樣:x0dx0a ListBox listBox = ...;x0dx0a listBox[0] = "hello";x0dx0a Console.WriteLine(listBox[0]);x0dx0a代理和反饋:x0dx0a 一個代理對象包括了訪問一個特定對象的特定方法所需的信息.只要把它當成一個聰明的方法指針就行了.代理對象可以被移動到另一個地方,然後可以通過訪問它來對已存在的方法進行類型安全的調用.一個反饋方法是代理的特例.event關鍵字用在將在事件發生的時候被當成代理調用的方法聲明中.

熱點內容
紅帆oa伺服器地址查詢 發布:2025-02-07 14:31:41 瀏覽:657
文本框腳本圖片 發布:2025-02-07 14:23:28 瀏覽:231
少兒編程c語言 發布:2025-02-07 14:22:50 瀏覽:218
一階低通濾波器c語言 發布:2025-02-07 14:22:37 瀏覽:852
電腦的東西為什麼粘貼不到伺服器 發布:2025-02-07 14:21:04 瀏覽:197
手機脫模解壓視頻 發布:2025-02-07 14:20:18 瀏覽:473
密碼多少密碼多少密碼多少密碼 發布:2025-02-07 14:07:30 瀏覽:857
我的世界啟動器電腦伺服器 發布:2025-02-07 14:07:27 瀏覽:484
愛加密深圳科技有限 發布:2025-02-07 14:07:26 瀏覽:87
c語言密碼星號 發布:2025-02-07 14:07:24 瀏覽:801