官术网_书友最值得收藏!

1.1 認(rèn)識(shí)C#

C#的全稱為C sharp,讀為“C霎普”。在本節(jié)中,將介紹C#語言的由來和特點(diǎn),大致了解C#語言的基本情況。本章還會(huì)對(duì)Visual Studio 2010集成開發(fā)環(huán)境的安裝和使用進(jìn)行簡(jiǎn)單的介紹,安裝好開發(fā)環(huán)境后,就能更好地對(duì)C#語言進(jìn)行進(jìn)一步的學(xué)習(xí)。

1.1.1 C#的由來

在1998年,Delphi語言的設(shè)計(jì)者Hejlsberg帶領(lǐng)著Microsoft公司的開發(fā)團(tuán)隊(duì),開始了第一個(gè)版本C#語言的設(shè)計(jì)。在2000年9月,國(guó)際信息和通信系統(tǒng)標(biāo)準(zhǔn)化組織為C#語言定義了一個(gè)Microsoft公司建議的標(biāo)準(zhǔn)。最終C#語言在2001年得以正式發(fā)布。

C#語言是建立在.NET Framework環(huán)境之上的,.NET Framework是一個(gè)類庫。其為C#語言開發(fā)的應(yīng)用程序提供了強(qiáng)大的類庫支持,但是,它不僅僅支持C#語言,還支持VB.NET和C++的托管方式。C#語言是.NET Framework平臺(tái)首選的開發(fā)語言。也可以這樣說:C#語言就是為.NET Framework平臺(tái)而產(chǎn)生的語言。

注意:C#語言用于生成面向.NET環(huán)境的代碼,但是它不是.NET環(huán)境的一部分,初學(xué)者很容易把.NET和C#語言混為一談。C++運(yùn)行在.NET Framework之上的叫做C++的托管方式,由公共語言運(yùn)行庫環(huán)境.NET Framework執(zhí)行,而不是直接由操作系統(tǒng)執(zhí)行的代碼就是托管代碼。

.NET對(duì)開發(fā)人員來說十分重要。因?yàn)樗坏淖兞碎_發(fā)人員開發(fā)應(yīng)用程序的傳統(tǒng)方式,而且可以使開發(fā)人員能快速創(chuàng)建出全新的各種應(yīng)用程序,大幅度地提高了軟件的生產(chǎn)效率。Microsoft公司推出.NET的目的在于完全消除當(dāng)今計(jì)算技術(shù)中的所有缺陷,實(shí)現(xiàn)用戶從任何地點(diǎn)、任何設(shè)備都可訪問其個(gè)人數(shù)據(jù)和應(yīng)用程序的宏偉藍(lán)圖。

1.1.2 C#的特點(diǎn)

C#語言主要有6個(gè)特點(diǎn),即生成中間代碼、在命名空間中聲明、數(shù)據(jù)類型豐富、有兩個(gè)基本類、方法可當(dāng)做參數(shù)傳遞、與COM集成。下面將分別簡(jiǎn)要介紹這些特點(diǎn),初學(xué)者只需了解即可,并不要求更深層次的掌握。

· 生成中間代碼:使用C#開發(fā)的應(yīng)用程序,在編譯成機(jī)器碼時(shí),都是生成中間匯編形式的語言。只有當(dāng)它們運(yùn)行時(shí),才會(huì)被編譯成本地計(jì)算機(jī)可執(zhí)行的代碼。如圖1.1所示,說明了.NET環(huán)境下中間的公共語言運(yùn)行模式。

提示:使用C#、VB.NET、C++托管版本的語言編寫程序,都是生成中間語言執(zhí)行的,而不是直接被計(jì)算機(jī)的CPU和操作系統(tǒng)直接執(zhí)行,在這一點(diǎn)上和Java語言類似。有的初學(xué)者會(huì)認(rèn)為C#是被計(jì)算機(jī)的CPU直接執(zhí)行的。

· 在命名空間中聲明:當(dāng)使用C#語言創(chuàng)建一個(gè)應(yīng)用程序時(shí),就會(huì)在一個(gè)命名空間里創(chuàng)建一個(gè)或多個(gè)類。同時(shí)在這個(gè)命名空間里,還有可能聲明要有結(jié)構(gòu)體、變量等。這時(shí)就必須使用using關(guān)鍵字來引用其他的命名空間內(nèi)容,用來支持對(duì)結(jié)構(gòu)體等類型的操作。例如,對(duì)SQL Server數(shù)據(jù)庫操作時(shí)用的命名空間如下所示。

        using System.Data.SqlClient;           //提供了對(duì)SQL Server數(shù)據(jù)庫操作的許多類

· 可以形象地說,命名空間就像一個(gè)文件夾,其中的對(duì)象就像一個(gè)個(gè)文件一樣,不同文件夾內(nèi)的文件可以重名。在使用重名的文件時(shí),只需要說明是哪個(gè)文件夾下的就可以了,它們雖然是同名,但不是等同的。圖1.2形象地說明了這個(gè)問題。

圖1.1 .NET環(huán)境下的中間匯編形式的語言

圖1.2 文件a屬于不同的命名空間

· 豐富的數(shù)據(jù)類型:C#語言擁有比C、C++更廣泛和豐富的數(shù)據(jù)類型。例如bool、byte、ubyte、short、ushort、int、uint、long、ulong、float、double、decimal等,具體每一種是什么意思,會(huì)在第2 章中有更詳細(xì)的講解,在這里讀者可以憑其英文意思進(jìn)行初步理解。這些數(shù)據(jù)類型都有一個(gè)固定的大小,在內(nèi)存中表現(xiàn)為有固定的長(zhǎng)度,每種數(shù)據(jù)類型都可分為有符號(hào)和無符號(hào)兩種類型,如圖1.3所示。

注意:在計(jì)算機(jī)語言中,有符號(hào)和無符號(hào)是指變量的值是否有正號(hào)或負(fù)號(hào),無符號(hào)型數(shù)據(jù)只有正數(shù)類型。一般地,有符號(hào)數(shù)據(jù)類型用得多一些。

圖1.3 豐富的數(shù)據(jù)類型

· 有兩個(gè)基本類:此處要介紹的內(nèi)容會(huì)涉及類的知識(shí),相關(guān)內(nèi)容會(huì)在本書第4章中學(xué)到,此處就先作為了解,不要求掌握。在C#語言中,Object類是所有其他類的基類。String類和Object類一樣,是兩個(gè)基類之一,它們都是C#語言的一部分。

· 方法可當(dāng)參數(shù)傳遞:在一般情況下,默認(rèn)的參數(shù)傳遞只是對(duì)基本數(shù)據(jù)類型進(jìn)行值傳遞。但是在C#語言中,既可以通過值傳遞,也可以通過引用傳遞。通過引用傳遞參數(shù)允許函數(shù)成員(包括方法、屬性、索引器、運(yùn)算符)和構(gòu)造函數(shù)等傳遞參數(shù)的值。

· 與COM集成:COM技術(shù)是Microsoft公司的Win32組件技術(shù)。C#語言能與COM組件進(jìn)行無縫集成。用C#語言編寫的類可以子類化COM組件,所謂子類化就是指替換窗口的過程。C#語言生成的類也可以當(dāng)做一個(gè)COM組件使用,可用任何.NET語言進(jìn)行子類化。

· 索引下標(biāo):此處的內(nèi)容也不要求掌握,作為初步了解。一個(gè)索引或?qū)傩圆皇褂脤傩悦麃硪妙惓蓡T,而是用一個(gè)方括號(hào)中的數(shù)字來匿名引用,就像用數(shù)組的下標(biāo)一樣。例如a=array[4],這里的4就是下標(biāo)。數(shù)組的知識(shí)將會(huì)在第2章中介紹,這里只作簡(jiǎn)單的入門介紹。

1.1.3 C#與C++的區(qū)別

從語言體系上講,C#語言屬于C語言家族,是對(duì)C語言和C++語言的發(fā)展。它沿用并且發(fā)展了C++的基本思想,又去除和限制了一些相對(duì)比較難的技術(shù)。例如限制了指針,在C#語言中使用指針只能在不安全代碼中才能使用。

從標(biāo)準(zhǔn)化的角度講,C#語言是Microsoft公司在C++基礎(chǔ)上擴(kuò)充發(fā)展出來的。它并不是一個(gè)國(guó)際化標(biāo)準(zhǔn),它只是Microsoft公司的一個(gè)產(chǎn)品。但是C++是國(guó)際化的標(biāo)準(zhǔn),有標(biāo)準(zhǔn)的組織在維護(hù),它并不屬于任何一個(gè)公司或者組織。

警告:特別要強(qiáng)調(diào)C++和VC++的區(qū)別和聯(lián)系,很多初學(xué)者常把兩者看做是同一個(gè)事物。這是錯(cuò)誤的,也是相當(dāng)一部分初級(jí)程序員模糊的問題。VC++是Microsoft公司添加了許多類庫以后的一種C++版本,這些類庫主要是Windows平臺(tái)上一些API的封裝,所以用VC++開發(fā)Windodws應(yīng)用程序可省去很多麻煩的過程。

從技術(shù)應(yīng)用角度講,C#語言在C++基礎(chǔ)上擴(kuò)充和發(fā)展出來以后,更注重于實(shí)際開發(fā)應(yīng)用,在思想上完全面向?qū)ο蟆O拗屏薈++的一些底層的東西,又增加了一些新的功能,例如自動(dòng)回收內(nèi)存。但這些功能的擴(kuò)充,導(dǎo)致了C#語言不可能像C++那樣在底層控制上自由、靈活、效率高。但這種改進(jìn)在軟件開發(fā)效率上有很大的提高,同時(shí)。對(duì)于學(xué)習(xí)者入門的要求也降低了。

總的來說,C#語言是為了提升軟件開發(fā)效率將軟件工業(yè)化的產(chǎn)物,也是Microsoft公司為了市場(chǎng)競(jìng)爭(zhēng)而推出的一個(gè)產(chǎn)品。其競(jìng)爭(zhēng)的對(duì)象就是Java語言,或者說Java EE平臺(tái),兩者的運(yùn)行機(jī)制非常相似。相比之下,C#語言可以做到的事情C++語言都能做到,并且更完全、更面向計(jì)算機(jī)底層,在一定程度上效率更高。只不過用C++實(shí)現(xiàn)會(huì)更加復(fù)雜,對(duì)程序員的要求也更高。

注意:很多初學(xué)者看到計(jì)算機(jī)底層這個(gè)概念,往往思考得不太清楚。在程序設(shè)計(jì)或整個(gè)計(jì)算機(jī)系統(tǒng)中,說底層其實(shí)就是和計(jì)算機(jī)硬件接近的程度。例如,說匯編語言很底層,就是說匯編語言更接近硬件。說到上層應(yīng)用,大多數(shù)情況下,都是一些業(yè)務(wù)邏輯上的開發(fā),它們和硬件的關(guān)系并不大。

主站蜘蛛池模板: 西宁市| 五河县| 饶河县| 盘山县| 武宣县| 山丹县| 凉山| 新河县| 政和县| 祁阳县| 孟州市| 德兴市| 江门市| 贺州市| 凤阳县| 容城县| 延庆县| 阿城市| 克山县| 成都市| 仪征市| 黔西| 海盐县| 绥江县| 宝丰县| 平遥县| 株洲县| 隆回县| 长白| 南平市| 那坡县| 平利县| 类乌齐县| 信阳市| 邹城市| 宕昌县| 河北区| 连山| 新河县| 星座| 安庆市|