狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言

admin
2014年5月13日 23:13 本文熱度 7603




C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言。并定于在微軟職業(yè)開(kāi)發(fā)者論壇(PDC)上登臺(tái)亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來(lái)與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語(yǔ)法和編譯成中間代碼再運(yùn)行的過(guò)程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,而且它是微軟公司 .NET windows網(wǎng)絡(luò)框架的主角。

C#是一種安全的、穩(wěn)定的、簡(jiǎn)單的、優(yōu)雅的,由C和C++衍生出來(lái)的面向?qū)ο?/A>的編程語(yǔ)言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒(méi)有以及不允許多重繼承)。C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開(kāi)發(fā)的首選語(yǔ)言。[1]


C#使得C++程序員可以高效的開(kāi)發(fā)程序,且因可調(diào)用由 C/C++ 編寫(xiě)的本機(jī)原生函數(shù),因此絕不損失C/C++原有的強(qiáng)大的功能。因?yàn)檫@種繼承關(guān)系,C#與C/C++具有極大的相似性,熟悉類(lèi)似語(yǔ)言的開(kāi)發(fā)者可以很快的轉(zhuǎn)向C#。[2]





外文名
C#


別 稱
C SHARP


類(lèi) 別
面向?qū)ο缶幊陶Z(yǔ)言



發(fā)布時(shí)間
2000年6月


發(fā)布單位
微軟公司


開(kāi)發(fā)者
安德斯·海爾斯伯格





1歷史發(fā)展編輯


C#是微軟公司在2000年6月發(fā)布的一種新的編程語(yǔ)言,主要由安德斯·海爾斯伯格(Anders Hejlsberg)主持開(kāi)發(fā),它是第一個(gè)面向組件的編程語(yǔ)言,其源碼會(huì)編譯成msil再運(yùn)行。它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,并且新增了許多功能及語(yǔ)法糖,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。[3]

C#讀作C Sharp。最初它有個(gè)更酷的名字,叫做COOL。微軟從1998年12月開(kāi)始了COOL項(xiàng)目,直到2000年2月,COOL被正式更名為C#。在1998年,Delphi語(yǔ)言的設(shè)計(jì)者Hejlsberg帶領(lǐng)著Microsoft公司的開(kāi)發(fā)團(tuán)隊(duì),開(kāi)始了第一個(gè)版本C#語(yǔ)言的設(shè)計(jì)。在2000年9月,國(guó)際信息和通信系統(tǒng)標(biāo)準(zhǔn)化組織為C#語(yǔ)言定義了一個(gè)Microsoft公司建議的標(biāo)準(zhǔn)。最終C#語(yǔ)言在2001年得以正式發(fā)布。

原Broland公司的首席研發(fā)設(shè)計(jì)師安德斯·海爾斯伯格(An
c#

c#[4]

ders Hejlsberg)在微軟開(kāi)發(fā)了Visual J++ 1.0,很快的Visual J++由1.1版本升級(jí)到6.0版。SUN公司認(rèn)為Visual J++ 違反了Java開(kāi)發(fā)平臺(tái)的中立性,對(duì)微軟提出了訴訟。2000年6月26日微軟在奧蘭多舉行的“職業(yè)開(kāi)發(fā)人員技術(shù)大會(huì)”(PDC 2000)上,發(fā)表新的語(yǔ)言C#。C#語(yǔ)言取代了Visual J++,語(yǔ)言本身深受 Java、C 和 C++ 的影響。[5]

C#是兼顧系統(tǒng)開(kāi)發(fā)和應(yīng)用開(kāi)發(fā)的最佳實(shí)用語(yǔ)言,并且很有可能成為編程語(yǔ)言歷史上的第一個(gè)“全能”型語(yǔ)言。看過(guò)這篇簡(jiǎn)史,不要把C#看成年輕后生了——只要是“馬拉多納”,就早晚當(dāng)“球王”。C#1.0,純粹的面向?qū)ο?/A>。[6]

1998年底,微軟正在忙于新一代COM的設(shè)計(jì)工作,COM一直是組件化開(kāi)發(fā)中非常成功的一種技術(shù);但由于它僅提供了二進(jìn)制層面上的統(tǒng)一,因此無(wú)法將類(lèi)型信息和用于支持基礎(chǔ)平臺(tái)和開(kāi)發(fā)工具的信息放到組件中,Java逐步走向成熟。微軟學(xué)習(xí)Java的做法,將虛擬機(jī)的概念引入到了COM領(lǐng)域;同時(shí),微軟提出了“元數(shù)據(jù)”的概念,用于描述組件的類(lèi)型信息和工具支持信息,并決定將其放入到組件當(dāng)中。[7]

1998年12月,微軟啟動(dòng)了一個(gè)全新的語(yǔ)言項(xiàng)目——COOL,這是一款專門(mén)為CLR設(shè)計(jì)的純面向?qū)ο蟮恼Z(yǔ)言,也正是本文的主角——C#的前身。[8]

1999年7月份,微軟完成了COOL語(yǔ)言的一個(gè)內(nèi)部版本。[8]

2000年2月份,微軟才正式將COOL語(yǔ)言更名為C#。據(jù)說(shuō)起這個(gè)名字是因?yàn)镃#開(kāi)發(fā)小組的人很討厭搜索引擎,因此把大部分搜索引擎無(wú)法識(shí)別的“#”字符作為該語(yǔ)言名字的一部分;還有一種說(shuō)法是在音樂(lè)當(dāng)中“#”是升調(diào)記號(hào),表達(dá)了微軟希望它在C的基礎(chǔ)上更上一層樓的美好愿望——當(dāng)然這些都只是傳說(shuō),無(wú)從考證。又是歷經(jīng)了一系列的修改,微軟終于在2000年7月發(fā)布了C#語(yǔ)言的第一個(gè)預(yù)覽版[8]


2設(shè)計(jì)目標(biāo)編輯


C#旨在設(shè)計(jì)成為一種“簡(jiǎn)單、現(xiàn)代、通用”,以及面向?qū)ο蟮?A target=_blank>程序設(shè)計(jì)語(yǔ)言,此種語(yǔ)言的實(shí)現(xiàn),應(yīng)提供對(duì)于以下軟件工程要素的支持:強(qiáng)類(lèi)型檢查、數(shù)組維度檢查、未初始化的變量引用檢測(cè)、自動(dòng)垃圾收集(Garbage Collection,指一種自動(dòng)內(nèi)存釋放技術(shù))。軟件必須做到強(qiáng)大、持久,并具有較強(qiáng)的編程生產(chǎn)力。此種語(yǔ)言為在分布式環(huán)境中的開(kāi)發(fā)提供適用的組件開(kāi)發(fā)應(yīng)用。

為使程序員容易遷移到這種語(yǔ)言,源代碼的可移植性十分重要,尤其是對(duì)于那些已熟悉C和C++的程序員而言。對(duì)國(guó)際化的支持非常重要。C#適合為獨(dú)立和嵌入式的系統(tǒng)編寫(xiě)程序,從使用復(fù)雜操作系統(tǒng)的大型系統(tǒng)到特定應(yīng)用的小型系統(tǒng)均適用。[9-10]


3語(yǔ)言結(jié)構(gòu)編輯


類(lèi):在C#中類(lèi)的聲明與C++和Java很相似。但是,不象C++,C#結(jié)構(gòu)體
C# Project

C# Project[11]

類(lèi)是不支持繼承。但是,與Java相同的是,一個(gè)結(jié)構(gòu)體可以實(shí)現(xiàn)接口(interface)。Java的關(guān)鍵字import已經(jīng)被替換成using,它起到了同樣的作用。

類(lèi)可以是抽象的和不可繼承的:一個(gè)被申明成abstract的類(lèi)不能被實(shí)例化,它只能被用做一個(gè)基類(lèi),C#關(guān)鍵字lock就像Java關(guān)鍵字final,它申明一個(gè)類(lèi)不是抽象的,但是它也不能被用做另一個(gè)類(lèi)的基類(lèi)界面:就象在Java中一樣,一個(gè)界面是一組方法集合的抽象定義。當(dāng)一個(gè)類(lèi)或結(jié)構(gòu)體實(shí)現(xiàn)一個(gè)界面的時(shí)候,它必須實(shí)現(xiàn)這個(gè)界面中定義的所有方法。一個(gè)單一的類(lèi)可以實(shí)現(xiàn)幾個(gè)界面,也許以后會(huì)出現(xiàn)一些微妙的差別,但是這個(gè)特點(diǎn)看起來(lái)與Java相比沒(méi)有變化。[12]

Java中,一個(gè)接口是一組方法集合的抽象定義.當(dāng)一個(gè)類(lèi)或結(jié)構(gòu)體實(shí)現(xiàn)一個(gè)接口的時(shí)候,它必須實(shí)現(xiàn)這個(gè)接口中定義的所有方法.一個(gè)單一的類(lèi)可以實(shí)現(xiàn)幾個(gè)接口.也許以后會(huì)出現(xiàn)一些微妙的差別,但是這個(gè)特點(diǎn)看起來(lái)與Java相比沒(méi)有變化。布爾運(yùn)算:條件表達(dá)式的結(jié)果是布爾數(shù)據(jù)類(lèi)型,布爾數(shù)據(jù)類(lèi)型是這種語(yǔ)言中獨(dú)立的一種數(shù)據(jù)類(lèi)型.從布爾類(lèi)型到其他類(lèi)型沒(méi)有直接的轉(zhuǎn)換過(guò)程.布爾常量true和false是C#中的關(guān)鍵字.錯(cuò)誤處理:如Java中那樣,通過(guò)拋出和捕捉異常對(duì)象來(lái)管理錯(cuò)誤處理過(guò)程.內(nèi)存管理:由底層.NET框架進(jìn)行自動(dòng)內(nèi)存垃圾回收。

布爾運(yùn)算:條件表達(dá)式的結(jié)果是布爾數(shù)據(jù)類(lèi)型,布爾數(shù)據(jù)類(lèi)型是這種語(yǔ)言中獨(dú)立的一種數(shù)據(jù)類(lèi)型,從布爾類(lèi)型到其他類(lèi)型沒(méi)有直接的轉(zhuǎn)換過(guò)程,布爾常量true和false是C#中的關(guān)鍵字。錯(cuò)誤處理:如Java中那樣,通過(guò)拋出和捕捉異常對(duì)象來(lái)管理錯(cuò)誤處理過(guò)程。[13]

內(nèi)存管理:由底層.NET框架進(jìn)行自動(dòng)內(nèi)存垃圾回收。一個(gè)基本的C#類(lèi)中包含數(shù)據(jù)成員、屬性構(gòu)造器和方法。屬性可以是靜態(tài)或?qū)嵗蓡T。

接口是其他類(lèi)型為確保它們支持某些操作而實(shí)現(xiàn)的引用類(lèi)型。接口從不直接創(chuàng)建而且沒(méi)有實(shí)際的表示形式,其他類(lèi)型必須轉(zhuǎn)換為接口類(lèi)型。

一個(gè)接口定義一個(gè)協(xié)定。實(shí)現(xiàn)接口的類(lèi)或結(jié)構(gòu)必須遵守其協(xié)定。接口可以包含方法、屬性索引器和事件作為成員。

強(qiáng)類(lèi)型:C#是一個(gè)強(qiáng)類(lèi)型的語(yǔ)言,它的數(shù)值類(lèi)型有一些可以進(jìn)行隱式轉(zhuǎn)換,其他的必須顯式轉(zhuǎn)換,隱式轉(zhuǎn)換的類(lèi)型只能是長(zhǎng)度短的類(lèi)型轉(zhuǎn)換成長(zhǎng)的類(lèi)型,int可以轉(zhuǎn)換成longfloatdoubledecimal,反之必須顯式的轉(zhuǎn)換。

編譯:程序直接編譯成標(biāo)準(zhǔn)的二進(jìn)制可執(zhí)行形式.但C#的源程序并不是被編譯成二進(jìn)制可執(zhí)行形式,而是一種中間語(yǔ)言(IL),類(lèi)似于JAVA字節(jié)碼。如果前面的Hello World程序被保存成一個(gè)


c#與asp.net權(quán)威指南教程

c#與asp.net權(quán)威指南教程[14]

文本文件并被命名為Hello.cs,它將被編譯成命名Hello.exe的可執(zhí)行程序

C#程序不能直接編譯成標(biāo)準(zhǔn)的二進(jìn)制可執(zhí)行形式,與 Java 類(lèi)似,它被編譯成為中間代碼(Microsoft Intermediate Language),然后通過(guò) .NET Framework 的虛擬機(jī)——被稱之為通用語(yǔ)言執(zhí)行層(Common Language Runtime, CLR)——執(zhí)行。

一個(gè)C#的結(jié)構(gòu)體與C++的結(jié)構(gòu)體是相似的,因?yàn)樗軌虬瑪?shù)據(jù)聲明和方法.但是,不象C++,C#結(jié)構(gòu)體與類(lèi)是不同的而且不支持繼承.但是,與Java相同的是,一個(gè)結(jié)構(gòu)體可以實(shí)現(xiàn)接口。

預(yù)編譯:C# 中存在預(yù)編譯指令支持條件編譯,警告,錯(cuò)誤報(bào)告和編譯行控制.可用的預(yù)編譯指令有:#define,#undef,#if,#elif,#else,#endif,#warning,#error,#line。[15]

沒(méi)有了#include偽指令,無(wú)法再用#define 語(yǔ)句對(duì)符號(hào)賦值,所以就不存在源代碼替換的概念--這些符號(hào)只能用在#if和#elif偽指令里.在#line偽指令里的數(shù)字(和可選的名字)能夠修改行號(hào)還有#warning和#error輸出結(jié)果的文件名。[16]

操作符重載一些操作符能夠被重載,而另一些則不能.特別的是,沒(méi)有一個(gè)賦值運(yùn)算符能夠被重載.能夠被重載的單目操作符是:+ - ! ~ ++ -- true false 能夠被重載的二元運(yùn)算符是:+、 - 、*、 /、 %、 &、 |、 ^、 << 、>>、 ==、 !=、 >、 < 、>= 、<=。[17]

類(lèi)型C# 中的類(lèi)型一共分為兩類(lèi),一類(lèi)是值類(lèi)型(Value Type),一類(lèi)是引用類(lèi)型(Reference Type)。值類(lèi)型和引用類(lèi)型是以它們?cè)谟?jì)算機(jī)內(nèi)存中是如何被分配的來(lái)劃分的。值類(lèi)型包括 結(jié)構(gòu)和枚舉,引用類(lèi)型包括類(lèi)、接口、委托 等。還有一種特殊的值類(lèi)型,稱為簡(jiǎn)單類(lèi)型(Simple Type),比如 byte,int等,這些簡(jiǎn)單類(lèi)型實(shí)際上是FCL類(lèi)庫(kù)類(lèi)型的別名,比如聲明一個(gè)int類(lèi)型,實(shí)際上是聲明一個(gè)System. Int32結(jié)構(gòu)類(lèi)型。因此,在 Int32類(lèi)型中定義的操作,都可以應(yīng)用在int類(lèi)型上,比如 “123.Equals(2)”。

所有的值類(lèi)型都隱式地繼承自System.ValueType類(lèi)型(注意System.ValueType本身是一個(gè)類(lèi)類(lèi)型),System.ValueType和所有的引用類(lèi)型都 繼承自 System.Object基類(lèi)。不能顯式地讓結(jié)構(gòu)繼承一個(gè)類(lèi),因?yàn)镃#不支持多重繼承,而結(jié)構(gòu)已經(jīng)隱式繼承自ValueType。

NOTE堆棧(stack)是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中,變量會(huì)被分配在堆棧上來(lái)進(jìn)行操作。堆(heap)是用于為類(lèi)型實(shí)例(對(duì)象)分配空間的內(nèi)存區(qū)域,在堆上創(chuàng)建一個(gè)對(duì)象,會(huì)將對(duì)象的地址傳給堆棧上的變量(反過(guò)來(lái)叫變量指向此對(duì)象,或者變量引用此對(duì)象)。[18]

中間代碼微軟在用戶選擇何時(shí)MSIL應(yīng)該編譯成機(jī)器碼的時(shí)候
C#開(kāi)發(fā)QTP腳本標(biāo)志

C#開(kāi)發(fā)QTP腳本標(biāo)志[19]

是留了很大的余地.微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機(jī)器碼.它也明白許多--如果不是大多數(shù)的話--程序員認(rèn)為Java程序要不可避免的比C編寫(xiě)的任何東西都要慢.而這種實(shí)現(xiàn)方式?jīng)Q定了基于MSIL的程序(指的是用C#,Visual Basic,"Managed C++"--C++的一個(gè)符合CLS的版本--等語(yǔ)言編寫(xiě)的程序)將在性能上超過(guò)"解釋性的"Java代碼.當(dāng)然,這一點(diǎn)還需要得到事實(shí)證明,因?yàn)镃#和其他生成MSIL的編譯器還沒(méi)有發(fā)布.但是Java JIT編譯器的普遍存在使得Java和C#在性能上相對(duì)相同.象"C#是編譯語(yǔ)言而Java是解釋性的,"之類(lèi)的聲明只是商業(yè)技巧.Java的中間代碼和MSIL都是中間的匯編形式的語(yǔ)言,它們?cè)谶\(yùn)行時(shí)或其它的時(shí)候被編譯成機(jī)器代碼。[20]


4數(shù)據(jù)類(lèi)型編輯


基本數(shù)據(jù)類(lèi)型:C#擁有比C/C++或者Java更廣泛的數(shù)據(jù)類(lèi)型.這些類(lèi)型是bool、byte、ubyte、short、ushort、int、uint、long、ulong、float、double和decimal,像Java一樣,所有這些類(lèi)型都有一個(gè)固定的大小.又像C和C++一樣,每個(gè)數(shù)據(jù)類(lèi)型都有有符號(hào)和無(wú)符號(hào)兩種類(lèi)型.與Java相同的是,一個(gè)字符變量包含的是一個(gè)16位的Unicode字符,C#新的數(shù)據(jù)類(lèi)型是decimal數(shù)據(jù)類(lèi)型,對(duì)于貨幣數(shù)據(jù),它能存放28位10進(jìn)制數(shù)字。[20]

兩個(gè)基本類(lèi):一個(gè)名叫object的類(lèi)是所有其他類(lèi)的基類(lèi)。而一個(gè)名叫string的類(lèi)也象object一樣是這個(gè)語(yǔ)言的一部分.作為語(yǔ)言的一部分存在意味著編譯器有可能使用它,無(wú)論何時(shí)在程序中寫(xiě)入一句帶引號(hào)的字符串,編譯器會(huì)創(chuàng)建一個(gè)string對(duì)象來(lái)保存它。[20]

參數(shù)傳遞:方法可以被聲明接受可變數(shù)目的參數(shù).缺省的參數(shù)傳遞方法是對(duì)基本數(shù)據(jù)類(lèi)型進(jìn)行值傳遞。ref關(guān)鍵字可以用來(lái)強(qiáng)迫一個(gè)變量通過(guò)引用傳遞,這使得一個(gè)變量可以接受一個(gè)返回值。out關(guān)鍵字也能聲明引用傳遞過(guò)程,與ref不同的地方是,它指明這個(gè)參數(shù)并不需要初始值。[20]

COM的集成:C#對(duì)Windows程序最大的賣(mài)點(diǎn)可能就是它與COM的無(wú)縫集成了,COM就是微軟的Win32組件技術(shù).實(shí)際上,最終有可能在任何.NET語(yǔ)言里編寫(xiě)COM客戶和服務(wù)器端。C#編寫(xiě)的類(lèi)可以子類(lèi)化一個(gè)已存在的COM組件;生成的類(lèi)也能被作為一個(gè)COM組件使用,然后又能使用,比方說(shuō),JScript語(yǔ)言子類(lèi)化它從而得到第三個(gè)COM組件。這種現(xiàn)象的結(jié)果是導(dǎo)致了一個(gè)運(yùn)行環(huán)境的產(chǎn)生,在這個(gè)環(huán)境里的組件是網(wǎng)絡(luò)服務(wù),可用任何.NET語(yǔ)言子類(lèi)化。[20]

索引下標(biāo):一個(gè)索引屬性除了不使用屬性名來(lái)引用類(lèi)成員而是用一個(gè)方括號(hào)中的數(shù)字來(lái)匿名引用(就象用數(shù)組下標(biāo)一樣)以外是相似的。[20]

代理和反饋:一個(gè)代理對(duì)象包括了訪問(wèn)一個(gè)特定對(duì)象的特定方法所需的信息.只要把它當(dāng)成一個(gè)聰明的方法指針就行了。代理對(duì)象可以被移動(dòng)到另一個(gè)地方,然后可以通過(guò)訪問(wèn)它來(lái)對(duì)已存在的方法進(jìn)行類(lèi)型安全的調(diào)用.一個(gè)反饋方法是代理的特例.event關(guān)鍵字用在將在事件發(fā)生的時(shí)候被當(dāng)成代理調(diào)用的方法聲明中。[20]


5程序執(zhí)行編輯


C#所開(kāi)發(fā)的程序源代碼并不是編譯成能夠直接在操作系統(tǒng)上執(zhí)行的二進(jìn)制本地代碼。與Java類(lèi)似,它被編譯成為中間代碼,然后通過(guò).NET Framework的虛擬機(jī)——被稱之為通用語(yǔ)言運(yùn)行時(shí)(CLR)——執(zhí)行。 所有的.Net編程語(yǔ)言都被編譯成這種被稱為MSIL(Microsoft Intermediate Language )的中間代碼。因此雖然最終的程序在表面上仍然與傳統(tǒng)意義上的可執(zhí)行文件都具有“.exe”的后綴名。但是實(shí)際上,如果計(jì)算機(jī)上沒(méi)有安裝.Net Framework,那么這些程序?qū)⒉荒軌虮粓?zhí)行。 在程序執(zhí)行時(shí),.Net Framework將中間代碼翻譯成為二進(jìn)制機(jī)器碼,從而使它得到正確的運(yùn)行。最終的二進(jìn)制代碼被存儲(chǔ)在一個(gè)緩沖區(qū)中。所以一旦程序使用了相同的代碼,那么將會(huì)調(diào)用緩沖區(qū)中的版本。這樣如果一個(gè).Net程序第二次被運(yùn)行,那么這種翻譯不需要進(jìn)行第二次,速度明顯加快。[21]


6關(guān)鍵字編輯




























































































abstract

as

base

bool

break

byte

case

catch

char

checked

decimal

default

delegate

continue

double

do

else

enum

ecent

explicit

finally

fixed

float

for

foreach

get

goto

if

implicit

const

in

int

interface

internal

is

lock

long

new

null

object

partial

out

namespace

override

private

ref

readonly

public

return

protected

short

set

stackalloc

sizeof

static

this

struct

throw

try

switch

typeof

uint

unchecked

ulong

unsafe

void

ushort

using

value

virtual

volatile

where

while

yield

class

true

extern

false

sbyte

sealed[22]

部分描述:

abstract:可以和類(lèi)、方法、屬性、索引器及事件一起使用,標(biāo)識(shí)一個(gè)可以擴(kuò)展但不能被實(shí)體化的、必須被實(shí)現(xiàn)的類(lèi)或方法。

as:一個(gè)轉(zhuǎn)換操作符,如果轉(zhuǎn)換失敗,就返回null。

base:用于訪問(wèn)被派生類(lèi)或構(gòu)造中的同名成員隱藏的基類(lèi)成員。

catch:定義一個(gè)代碼塊,在特定類(lèi)型異常拋出時(shí),執(zhí)行塊內(nèi)代碼。

checked:既是操作符又是語(yǔ)句,確保編譯器運(yùn)行時(shí),檢查整數(shù)類(lèi)型操作或轉(zhuǎn)換時(shí)出現(xiàn)的溢出。

const:標(biāo)識(shí)一個(gè)可在編譯時(shí)計(jì)算出來(lái)的變量值,即一經(jīng)指派不可修改的值。

delegate:指定一個(gè)聲明為一種委托類(lèi)型。委托把方法封裝為可調(diào)用實(shí)體,能在委托實(shí)體中調(diào)用。

enum:表示一個(gè)已命名常量群集的值類(lèi)型。

event:允許一個(gè)類(lèi)或?qū)ο筇峁┩ㄖ某蓡T,他必須是委托類(lèi)型。

explicit:一個(gè)定義用戶自定義轉(zhuǎn)換操作符的操作符,通常用來(lái)將內(nèi)建類(lèi)型轉(zhuǎn)換為用戶定義類(lèi)型或反向操作,必須再轉(zhuǎn)換時(shí)調(diào)用顯示轉(zhuǎn)換操作符。

extern:標(biāo)識(shí)一個(gè)將在外部(通常不是c#語(yǔ)言)實(shí)現(xiàn)的方法。

finally:定義一個(gè)代碼塊,在程序控制離開(kāi)try代碼快后執(zhí)行。參見(jiàn)try和catch。

fixed:在一個(gè)代碼塊執(zhí)行時(shí),在固定內(nèi)存位置為一個(gè)變量指派一個(gè)指針。

foreach:用于遍歷一個(gè)群集的元素。

goto:一個(gè)跳轉(zhuǎn)語(yǔ)句,將程序執(zhí)行重定向到一個(gè)標(biāo)簽語(yǔ)句。

implicit:一個(gè)操作符,定義一個(gè)用戶定義的轉(zhuǎn)換操作符,通常用來(lái)將預(yù)定義類(lèi)型轉(zhuǎn)換為用戶定義類(lèi)型或反向操作,隱式轉(zhuǎn)換操作符必須在轉(zhuǎn)換時(shí)使用。

interface:將一個(gè)聲明指定為接口類(lèi)型,即實(shí)現(xiàn)類(lèi)或構(gòu)造必須遵循的合同。

internal:一個(gè)訪問(wèn)修飾符。

namespace:定義一個(gè)邏輯組的類(lèi)型和命名空間。

operator:用來(lái)聲明或多載一個(gè)操作符。

out:標(biāo)識(shí)一個(gè)參數(shù)值會(huì)受影響的參數(shù),但在傳入方法時(shí),該參數(shù)無(wú)需先初始化。

params:聲明一個(gè)參數(shù)數(shù)組。如果使用,必須修改指定的最后一個(gè)參數(shù),允許可選參數(shù)。

readonly:標(biāo)識(shí)一個(gè)變量的值在初始化后不可修改。

ref:標(biāo)識(shí)一個(gè)參數(shù)值可能會(huì)受影響的參數(shù)。

sealed:防止類(lèi)型被派生,防止方法和property被覆載。

sizeof:一個(gè)操作符,以byte為單位返回一個(gè)值類(lèi)型的長(zhǎng)度。

stackalloc:返回在堆上分配的一個(gè)內(nèi)存塊的指針。

struct:是一種值類(lèi)型,可以聲明常量、字段、方法、property、索引器、操作符、構(gòu)造器和內(nèi)嵌類(lèi)型。

throw:拋出一個(gè)異常。

try:異常處理代碼塊的組成部分之一。try代碼塊包括可能會(huì),拋出異常的代碼。參閱catch和finally關(guān)鍵字。

typeof:一個(gè)操作符,返回傳入?yún)?shù)的類(lèi)型。

unchecked:禁止溢出檢查。

unsafe:標(biāo)注包含指針操作的代碼塊、方法或類(lèi)。

using:當(dāng)用于命名空間時(shí),using關(guān)鍵字允許訪問(wèn)該命名空間中的類(lèi)型,而無(wú)需指定其全名。也用于定義finalization操作的范圍。

virtual:一個(gè)方法修飾符,標(biāo)識(shí)可被覆載的方法。

volatile:標(biāo)識(shí)一個(gè)可被操作系統(tǒng)、某些硬件設(shè)備或并發(fā)線程修改的attribute。[22-23]


7版本介紹編輯


C# 1.0-純粹的面向?qū)ο?/B>

在2003年5月,微軟推出了Visual Studio .NET 2003,同時(shí)也發(fā)布了C#的改進(jìn)版本——C# 1.1。[24]


盡管C# 1.x提供了如此多的新鮮概念,但實(shí)際上,這些概念都是由CLI提出的。因此當(dāng)將一個(gè)C#源程序編譯為可執(zhí)行文件時(shí),編譯器做的工作相對(duì)而言并不多。需要編譯器代勞的是要將一個(gè)簡(jiǎn)單的委托定義語(yǔ)句翻譯為一個(gè)繼承System.MulticastDelegate類(lèi)型定義。[24]

C# 2.0-泛型編程新概念

微軟在2004年的6月份發(fā)布了Visual Studio2005的第一個(gè)Beta 版,同時(shí)向開(kāi)發(fā)者展示了C#語(yǔ)言的2.0版本。2005年4月,微軟發(fā)布了Visual Studio 2005 Beta2,這已經(jīng)是具備了幾乎全部功能的VisualStudio,包括的產(chǎn)品有SQL Server2005、Team Foundation Server和TeamSuite。這時(shí)的C#編譯器已經(jīng)能夠處理C# 2.0中所有的新特性。[25]

C# 2.0為開(kāi)發(fā)者帶來(lái)的最主要的特性就是泛型編程能力。和面向?qū)?
Microsoft Visual C# .NET Step by Step

Microsoft Visual C# .NET Step by Step[26]

象思想一樣,泛型思想也是一種已經(jīng)成熟的編程思想,但依然是沒(méi)有哪一種主流開(kāi)發(fā)語(yǔ)言能夠支持完備的泛型概念。這主要是因?yàn)榉盒偷母拍钤谝欢ǔ潭壬蠈?duì)面向?qū)ο蟾拍钸M(jìn)行沖擊,同時(shí),由于在編譯期間對(duì)類(lèi)型參數(shù)的完全檢測(cè)很難做到,很多問(wèn)題會(huì)被遺留到運(yùn)行時(shí)。C# 2.0別出心裁,對(duì)泛型類(lèi)型參數(shù)提出了“約束”的新概念,并以優(yōu)雅的語(yǔ)法體現(xiàn)在語(yǔ)言之中。有了約束,結(jié)合編譯器強(qiáng)大的類(lèi)型推斷能力,可以在編譯時(shí)發(fā)現(xiàn)幾乎所有“危險(xiǎn)”的泛型應(yīng)用。[27]

C# 2.0的另一個(gè)突出的特性就是匿名方法,用來(lái)取代一些短小的并且僅出現(xiàn)一次的委托,使得語(yǔ)言結(jié)構(gòu)更加緊湊。匿名方法除了可以使得事件處理器的編寫(xiě)更加精簡(jiǎn)以外,還將開(kāi)發(fā)者帶入了程序設(shè)計(jì)的一個(gè)新的領(lǐng)域——函數(shù)式編程,曾經(jīng)有高人就用匿名方法結(jié)合泛型編程實(shí)現(xiàn)了函數(shù)式編程中的重要結(jié)構(gòu)—— Lambda 表達(dá)式。盡管這種實(shí)現(xiàn)顯得很繁瑣而且不易理解,但畢竟是實(shí)現(xiàn)了。

C#3.0-(研發(fā)代號(hào)“Orcas”)

2005年9 月份的PDC大會(huì)——C#3.0(研發(fā)代號(hào)“Orcas”——魔鬼)的技術(shù)預(yù)覽版。說(shuō)到C# 3.0,就不得不提一下微軟的LINQ 項(xiàng)目,LINQ(語(yǔ)言集成查詢,Language Integrat
c# 本質(zhì)論

c# 本質(zhì)論[28]

ed Query)提出了一種通過(guò)面向?qū)ο笳Z(yǔ)法來(lái)實(shí)現(xiàn)對(duì)非面向?qū)ο髷?shù)據(jù)源的查詢技術(shù),可查詢的數(shù)據(jù)源從關(guān)系型數(shù)據(jù)庫(kù)延伸到一般意義上的集合(如數(shù)組和列表)以及XML。而C# 3.0則是率先實(shí)現(xiàn)了LINQ的語(yǔ)言。

在C# 3.0中,可以用類(lèi)似于SQL語(yǔ)句的語(yǔ)法從一個(gè)數(shù)據(jù)源中輕松地得到滿足一定條件的對(duì)象集合。例如要查找一個(gè)字符串?dāng)?shù)組names中所有長(zhǎng)度大于5的字符串,就可以寫(xiě):var longname = from n in names wheren.Length > 5 select n;

這樣就得到一個(gè)新的字符數(shù)組longname,其中包含了所需要的結(jié)果。這種語(yǔ)句稱作查詢語(yǔ)句,與SQL語(yǔ)句唯一的區(qū)別是C#中的查詢語(yǔ)句往往把select子句放到最后(這反而倒有些類(lèi)似于中文的閱讀順序了)。初次看到這樣一個(gè)語(yǔ)句,可能會(huì)有很大疑問(wèn):這還是C#語(yǔ)言嗎?這的確是合乎語(yǔ)法規(guī)則的C#代碼,而且編譯器可以識(shí)別這種語(yǔ)法。然而實(shí)際上,C#編譯器并不會(huì)對(duì)這種語(yǔ)法進(jìn)行實(shí)際的的編譯,而是將其翻譯為正常的方法調(diào)用。[29-30]

C# 4.0動(dòng)態(tài)編程

C# 4.0 新增 dynamic關(guān)鍵字,提供動(dòng)態(tài)編程(dynamic programming),把既有的靜態(tài)物件標(biāo)記為動(dòng)態(tài)物件,類(lèi)似javascript, Python 或 Ruby[31-32]


8發(fā)展前景編輯


根據(jù)育龍網(wǎng)資料評(píng)價(jià)顯示:C#幾乎集中了所有關(guān)于軟件開(kāi)發(fā)軟件工程研究的最新成果:面向?qū)ο蟆㈩?lèi)型安全、組件技術(shù)、自動(dòng)內(nèi)存管理、跨平臺(tái)異常處理、版本控制、代碼安全管理……。盡管像很多人注意到的一樣,羅列上述特性時(shí),總是讓人想到JAVA,然而C# 確實(shí)走得更遠(yuǎn)。但現(xiàn)實(shí)的情況是,非技術(shù)的因素往往更能決定一個(gè)產(chǎn)品的未來(lái),尤其在計(jì)算機(jī)軟件的歷史上,技術(shù)卓越的產(chǎn)品,如OS/2、Mac OS、UNIX等,都敗在了Windows漂亮的界面上。JAVA的用戶主要是網(wǎng)絡(luò)服務(wù)的開(kāi)發(fā)者和嵌入式設(shè)備軟件的開(kāi)發(fā)者,嵌入式設(shè)備軟件不是C# 的用武之地,而在網(wǎng)絡(luò)服務(wù)方面,C# 的即時(shí)編譯和本地代碼Cache方案比JAVA虛擬機(jī)具有絕對(duì)的性能優(yōu)勢(shì)。何況C# 一旦成為一個(gè)像C++ 一樣的公共的標(biāo)準(zhǔn),軟件開(kāi)發(fā)商既可以省去JAVA的許可證費(fèi)用,也不必?fù)?dān)心成為微軟的奴隸,那些反微軟的人士和主張廠商獨(dú)立的人士可能也不會(huì)有什么意見(jiàn)。這可能正是微軟所期待的。[33]

如果把C# 和 JAVA 在網(wǎng)絡(luò)服務(wù)領(lǐng)域的爭(zhēng)奪比作未來(lái)制空權(quán)的爭(zhēng)奪,那么C# 和傳統(tǒng)通用快速開(kāi)發(fā)工具——VB、DELPHI等的較量將是地地道道的白刃戰(zhàn)。可能最慘的程序員就是VB程序員,在微軟,VB就像離任的克林頓,不但失去了所有的光輝,而且亂事纏身。[33]

其實(shí)在編程語(yǔ)言中真正的霸主多年來(lái)一直是C++,所有的操作系統(tǒng)和絕大多數(shù)的商品軟件都是用C++作為主要開(kāi)發(fā)語(yǔ)言的。JAVA的程序員絕大多數(shù)也是C++的愛(ài)好者,PHP的成功里面也有類(lèi)似C++的語(yǔ)法的功勞。在操作系統(tǒng)、設(shè)備驅(qū)動(dòng)程序、視頻游戲等領(lǐng)域,C++在很長(zhǎng)的時(shí)間內(nèi)仍將占據(jù)主要地位,而在數(shù)量最大的應(yīng)用軟件的開(kāi)發(fā)上,C# 很可能取代C++的位置。首先,C# 和JAVA一樣,簡(jiǎn)直就是照搬了C++的部分語(yǔ)法,因此,對(duì)于數(shù)量眾多的C++程序員學(xué)習(xí)起來(lái)很容易上手,另外,對(duì)于新手來(lái)說(shuō),比C++要簡(jiǎn)單一些。其次,Windows是占?jí)艛嗟匚坏钠脚_(tái),而開(kāi)發(fā)Windows應(yīng)用,當(dāng)然微軟的聲音是不能忽略的。最重要的是,相對(duì)于C++,用C# 開(kāi)發(fā)應(yīng)用軟件可以大大縮短開(kāi)發(fā)周期,同時(shí)可以利用原來(lái)除用戶界面代碼之外的C++代碼。[33]

但是,C# 也有弱點(diǎn)。首先,在一些版本較舊的Windows平臺(tái)上,C# 的程序還不能運(yùn)行,因?yàn)镃# 程序需要 .NET運(yùn)行庫(kù)作為基礎(chǔ),而 .NET運(yùn)行庫(kù)作為WindowsXP及以后版本)的一部分發(fā)行, Windows Me 和 Windows 2000用戶只能以Service Pack的形式安裝使用。其次,C# 能夠使用的組件或庫(kù)還只有 .NET 運(yùn)行庫(kù)等很少的選擇,沒(méi)有豐富的第三方軟件庫(kù)可用,這需要有一個(gè)過(guò)程,同時(shí)各軟件開(kāi)發(fā)商的支持也很重要。第三,JAVA的成功因素里有一些是反微軟陣營(yíng)的吹捧,雖然“只寫(xiě)一次,到處運(yùn)行”只是一句口號(hào),但畢竟已經(jīng)是一種成熟的技術(shù)。而C# 的鼓吹者只有名聲不佳的微軟,且只能運(yùn)行在Windows上。實(shí)際上這兩種語(yǔ)言都不是不可替代的,理智的說(shuō),對(duì)軟件開(kāi)發(fā)商而言,什么用的最熟什么就是最好的工具。尤其對(duì)C++的使用者,C# 沒(méi)有帶來(lái)任何新東西,因?yàn)?NET運(yùn)行庫(kù)在C++中也可以使用,沒(méi)有要換的絕對(duì)的理由。[33]

C# 將不可避免地崛起,在Windows平臺(tái)上成為主角,而JAVA將在UNIX、Linux等平臺(tái)上成為霸主,C++ 將繼續(xù)在系統(tǒng)軟件領(lǐng)域大展拳腳。非常有意思的是,這些語(yǔ)言的語(yǔ)法極其接近,因?yàn)镴AVA和C# 都是由C++發(fā)展而來(lái)的。其他的開(kāi)發(fā)工具當(dāng)然還會(huì)在相當(dāng)長(zhǎng)的時(shí)間里繼續(xù)他們的旅程,不過(guò)在市場(chǎng)份額上,將不可避免地受到?jīng)_擊。[33]

該文章在 2014/5/13 23:13:39 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved