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

第1篇 C#基礎(chǔ)

1 C#語(yǔ)言和框架概述

C#(讀作C Sharp)語(yǔ)言是.NET框架重點(diǎn)推出的開(kāi)發(fā)語(yǔ)言,其具備C++語(yǔ)言的安全性和VB(Visual Basic,以下簡(jiǎn)稱VB)語(yǔ)言的快速開(kāi)發(fā)特點(diǎn),是目前最流行的開(kāi)發(fā)語(yǔ)言之一。因?yàn)镃#語(yǔ)言的類庫(kù)全部封裝在.NET框架中,所以在講解具體的C#開(kāi)發(fā)語(yǔ)言前,本章會(huì)先介紹.NET框架,其目前的最新版本是3.5。

1.1 .NET 3.5框架

.NET 3.5是Microsoft推出的最新開(kāi)發(fā)框架,其支持目前最流行的開(kāi)發(fā)語(yǔ)言VB和C#,也封裝了一些常用的類庫(kù)和組件,通過(guò)此框架,可以開(kāi)發(fā)和運(yùn)行常見(jiàn)的Windows程序和Web程序。本節(jié)簡(jiǎn)要介紹框架的內(nèi)容和運(yùn)行機(jī)制。

注意:.NET 3.5框架之前有個(gè).NET 3.0框架,但并沒(méi)有流行起來(lái)。.NET 3.5包含了.NET 2.0框架和.NET 3.0框架的所有內(nèi)容。

1.1.1 .NET 3.5框架支持的開(kāi)發(fā)語(yǔ)言

Java語(yǔ)言也是很流行的一種語(yǔ)言,但其必須運(yùn)行在虛擬機(jī)上,這樣可以實(shí)現(xiàn)一些跨平臺(tái)的應(yīng)用。而現(xiàn)在最新版本的Visual C# 2008和Visual Basic 2008則必須運(yùn)行在.NET 3.5框架上。如果要在服務(wù)器上運(yùn)行Visual C# 2008的程序,則必須在服務(wù)器上安裝.NET 3.5框架。

提示:Microsoft最新的操作系統(tǒng)Vista自帶.NET 3.0框架。

雖然.NET 3.5是一個(gè)成熟的框架,但其底層類庫(kù)依然調(diào)用的是.NET 2.0以前封裝好的所有類,圖1.1所示的是.NET 3.5框架的基本組成,最上層就是其支持的開(kāi)發(fā)語(yǔ)言。

圖1.1 .NET 3.5框架的基本組成

在.NET 3.5支持的開(kāi)發(fā)語(yǔ)言中,C#和VB最流行。VB一般用來(lái)快速開(kāi)發(fā),在小型Windows應(yīng)用系統(tǒng)中最常用。C#是Microsoft重點(diǎn)推出的開(kāi)發(fā)語(yǔ)言,其結(jié)合了C和C++的一些優(yōu)點(diǎn),然后又去除了指針等難于理解的概念,是一門易于上手、易于開(kāi)發(fā)的語(yǔ)言。

1.1.2 C#語(yǔ)言的特色

C#是最流行的開(kāi)發(fā)語(yǔ)言,相比較其他語(yǔ)言,其具備簡(jiǎn)單、方便、快速開(kāi)發(fā)等優(yōu)點(diǎn),主要特色如下所示。

C#語(yǔ)法與C、C++類似,適合剛畢業(yè)的學(xué)生入門。

C#支持面向?qū)ο箝_(kāi)發(fā),并有.NET底層類庫(kù)的支持,可以輕松創(chuàng)建對(duì)象。

C#的高開(kāi)發(fā)效率。C#的開(kāi)發(fā)工具VS 2005支持拖放式添加控件,開(kāi)發(fā)人員可以輕松完成桌面的布局。

C#通過(guò)內(nèi)置的服務(wù),使組件可以轉(zhuǎn)化為XML網(wǎng)絡(luò)服務(wù),這樣就可以被其他程序調(diào)用,也可以被網(wǎng)絡(luò)上其他機(jī)器的其他程序調(diào)用,實(shí)現(xiàn)了一次創(chuàng)造、重復(fù)利用的高效開(kāi)發(fā)模式。

XML語(yǔ)言是一種最流行的數(shù)據(jù)描述語(yǔ)言,C#提供了對(duì)XML的強(qiáng)大支持,可以輕松地創(chuàng)建XML,也可以將XML數(shù)據(jù)應(yīng)用到程序中。

自動(dòng)的資源回收功能,不用再像C++一樣,為程序運(yùn)行中的內(nèi)存管理傷腦筋。

類型安全是編寫(xiě)代碼優(yōu)先考慮的問(wèn)題。C#提供的類型安全機(jī)制,可以避免一些常見(jiàn)的類型問(wèn)題,如類型轉(zhuǎn)換、數(shù)組類型越界等。

在.NET框架中,C#可以自由地和其他語(yǔ)言(VB、J#等)進(jìn)行轉(zhuǎn)換。

1.1.3 C#語(yǔ)言的運(yùn)行機(jī)制

如果只是學(xué)習(xí)用C#編寫(xiě)一段程序,那很簡(jiǎn)單,短短幾行代碼便可以實(shí)現(xiàn);而了解其真正實(shí)現(xiàn)的原理,則有助于開(kāi)發(fā)出安全、便于重構(gòu)的高性能程序。

.NET框架下所有的語(yǔ)言,實(shí)際上都是把代碼翻譯成中間語(yǔ)言(簡(jiǎn)稱MSIL),然后生成標(biāo)準(zhǔn)程序集。無(wú)論是VB語(yǔ)言還是C#語(yǔ)言,它們使用的命名空間和類庫(kù)都是中間語(yǔ)言書(shū)寫(xiě)的,所以能夠相互操作和相互調(diào)用。從本質(zhì)上講,就是在個(gè)別語(yǔ)言之下加上了一個(gè)共同解釋。

.NET中的CLR(公共語(yǔ)言運(yùn)行時(shí)),用來(lái)運(yùn)行生成的MSIL,其實(shí)就是將MSIL轉(zhuǎn)換成COM以執(zhí)行程序。目前CLR只能在Windows平臺(tái)上運(yùn)行。

綜合上面所述,下面就是一個(gè)C#程序編譯運(yùn)行的簡(jiǎn)單步驟。

將編寫(xiě)的C#程序翻譯成中間語(yǔ)言。

2 經(jīng)過(guò)C#編譯器生成程序集(*.exe/*.dll)。編譯可以使用.NET框架提供的CSC命令,也可以在開(kāi)發(fā)工具Visual Studio中自動(dòng)編譯。

由公共語(yǔ)言運(yùn)行時(shí)(CLR)執(zhí)行程序集,生成本地代碼。

其中CLR的工作流程如圖1.2所示。

圖1.2 CLR的工作流程

1.1.4 C#語(yǔ)言的底層類庫(kù)

.NET 3.5提供了開(kāi)發(fā)所有應(yīng)用需要的類庫(kù),但其底層的基礎(chǔ)類庫(kù)依然是.NET 2.0的類庫(kù)。類庫(kù)的主要分類如圖1.3所示。在學(xué)習(xí)類庫(kù)的時(shí)候,不需要全部掌握其應(yīng)用技術(shù),了解類庫(kù)的基本架構(gòu)和實(shí)現(xiàn)原理才是最重要的。

圖1.3 類庫(kù)的主要分類

1.2 編寫(xiě)C#語(yǔ)言

Microsoft為C#開(kāi)發(fā)提供了強(qiáng)大的開(kāi)發(fā)工具Visual Studio,下一章將會(huì)介紹這個(gè)工具。只要安裝了.NET 3.5框架,C#也支持使用記事本進(jìn)行開(kāi)發(fā),這個(gè)比較簡(jiǎn)單,本節(jié)將先使用記事本為讀者介紹如何編寫(xiě)和編譯C#小程序。

1.2.1 用記事本編寫(xiě)Hello World程序并編譯程序

記事本的缺點(diǎn)就是無(wú)法提供自動(dòng)完成功能,不過(guò)對(duì)于非常簡(jiǎn)短的程序,用其編寫(xiě)可以一目了然,本例只是讓讀者了解什么是C#程序。

1 編寫(xiě)程序。在任意系統(tǒng)盤根目錄下創(chuàng)建一個(gè)記事本文檔,命名為“helloworld.cs”,其內(nèi)容如下所示。

using System;
class helloword
{
  public static void Main()
  {
    //輸出字符串
    Console.WriteLine("世界你好!");
  }
}

2 編譯程序。程序編寫(xiě)好后保存,然后打開(kāi)操作系統(tǒng)的DOS窗口,輸入csc編譯命令,如下所示,本例helloworld.cs文件保存在G盤下。

csc g:\helloworld.cs

3 輸入上述代碼后,按Enter鍵進(jìn)行編譯,編譯效果如下所示。

C:\Users\Administrator>csc g:\helloworld.cs
適用于Microsoft(R).NET Framework 3.5版的Microsoft(R) Visual C# 2008 編譯器3.5.21022.8 版
版權(quán)所有 (C) Microsoft Corporation。保留所有權(quán)利。

4 編譯成功后,其實(shí)是生成了一個(gè)helloworld.exe文件,可直接在此DOS窗口中輸入“helloworld”,執(zhí)行此文件,則會(huì)輸出源文件設(shè)計(jì)好的字符串,運(yùn)行效果如下所示。

C:\Users\Administrator>helloworld
世界你好!

1.2.2 分析代碼格式

在上節(jié)介紹的“helloworld.cs”中,代碼雖然簡(jiǎn)短,但包含了C#程序必需的一些調(diào)用和輸出。本節(jié)通過(guò)分析下面幾點(diǎn),讓讀者徹底明白C#代碼的一些基本知識(shí)。

(1)C#類文件的擴(kuò)展名。前面介紹的helloworld.cs文件,以cs作為擴(kuò)展名,這是所有C#類文件的通用擴(kuò)展名。.NET 3.5框架可以自動(dòng)翻譯該文件,生成MSIL中間代碼。

(2)引用命名空間(namespace)。.NET 3.5的特點(diǎn)就是提供了一些封裝好的類庫(kù),開(kāi)發(fā)人員可以通過(guò)這些類庫(kù),調(diào)用已有的方法,這樣減少了代碼編寫(xiě),也提高了開(kāi)發(fā)速度。這些封裝好的類庫(kù)分布在不同的命名空間內(nèi),其中最基本的命名空間是“System”,引用空間必須使用“using”關(guān)鍵字,而且引用表達(dá)式必須放在程序的開(kāi)始處。

(3)面向?qū)ο蟮某绦蜷_(kāi)發(fā)。面向?qū)ο缶褪前岩恍﹥?nèi)容封裝在類中,然后統(tǒng)一調(diào)用類的內(nèi)容。類使用關(guān)鍵字class聲明,后面緊跟類的名稱,上節(jié)就是創(chuàng)建了一個(gè)名為“helloworld”的類。編譯后的exe文件與此類名稱相同。

(4)方法定義。public用來(lái)定義全局方法,void就是判斷方法是否有返回值,如果是void就不返回任何值,如果是int就返回?cái)?shù)值型數(shù)據(jù),這些數(shù)據(jù)形式將在后面的章節(jié)介紹。void后面緊跟的是方法的名稱,方法必須帶()。

(5)輸出方法。在System命名空間內(nèi)包含一個(gè)輸出的類“Console”,其可以按行或者按字節(jié)輸出各類數(shù)據(jù),上例使用了此類的“WriteLine”方法,用來(lái)輸出一行數(shù)據(jù)。

(6)表達(dá)式結(jié)束符號(hào)。在C#中的表達(dá)式以分號(hào)結(jié)束。編譯器碰到分號(hào),便會(huì)知道此語(yǔ)句已經(jīng)結(jié)束。

(7)注釋。注釋是一種良好的代碼編寫(xiě)習(xí)慣,也是很多公司要求的規(guī)范,在C#中可以用“//”、“///”等實(shí)現(xiàn)注釋。

1.3 小結(jié)

本章通過(guò)分析.NET框架的運(yùn)行機(jī)制和C#語(yǔ)言的特色,了解了一些非常基礎(chǔ)的C#概念。C#是運(yùn)行在.NET框架上的,而.NET框架只能安裝在Windows的操作系統(tǒng)上,這也限制了C#語(yǔ)言的發(fā)展。但.NET框架提供了非常豐富的類庫(kù),通過(guò)這些類庫(kù),開(kāi)發(fā)人員可以非常簡(jiǎn)便地開(kāi)發(fā)出復(fù)雜的應(yīng)用程序。

本章最后分析了C#語(yǔ)言的一些代碼格式,要成為一個(gè)優(yōu)秀的程序員,一定要保持良好的代碼編寫(xiě)習(xí)慣,這樣便于代碼的維護(hù)和升級(jí)。

主站蜘蛛池模板: 辽宁省| 绥宁县| 滨海县| 阳信县| 芮城县| 苍南县| 长白| 南乐县| 泰顺县| 颍上县| 望奎县| 宁都县| 斗六市| 利津县| 兴化市| 重庆市| 青神县| 阜城县| 会同县| 化德县| 新宁县| 桂东县| 仁怀市| 区。| 陇南市| 绥中县| 夏津县| 龙井市| 鹿泉市| 故城县| 江达县| 长汀县| 隆子县| 龙州县| 资阳市| 沅陵县| 清原| 綦江县| 仙桃市| 始兴县| 宜川县|